我正在 Linux 上运行 Apache 的 Web 服务器。我尝试使用system()
PHP 调用来使用 Amazon EC2 命令行工具(ec2-describe-instance
等)。但是,它不起作用。网页不显示结果(其他命令如echo
工作正常)。我的 PHP 代码如下所示:
<h1>Beginning System Call</h1>
<?php
echo 'php started</br>';
echo exec("echo 'testing'; ec2-describe-addresses -O MY_AWS_ACCESS_KEY -W MY_AWS_SECRET_KEY");
?>
我尝试使用 Apache 用户来尝试该命令,得到的结果如下:
[ec2-user@ip-xx-xxx-xx-xxx ec2testing]$ sudo su apache
bash-4.1$ ec2-describe-addresses
bash: ec2-describe-addresses: command not found
对于 Apache 用户来说,这些命令似乎尚未“安装”。
我尝试使用这篇博文,但它仍然不起作用。
我是否遗漏了什么?
编辑:使用这个:
echo exec("echo 'testing'; sudo ec2-describe-addresses -O (Access Key Removed) -W (Secret Key Removed)");
给了我这个:
bash-4.1$ php index.php
<h1>Beginning System Call</h1>
php started</br>[sudo] password for apache:
答案1
在脚本中添加完整路径:
echo exec("echo 'testing'; sudo /opt/aws/apitools/ec2/bin/ec2-describe-addresses -O (Access Key Removed) -W (Secret Key Removed)");
答案2
PATH 变量未设置ec2-describe-addresses
所以你有两个选择
选项1
使用以下方式设置 PATH
export PATH=$PATH:/opt/aws/apitools/ec2/bin/
选项2
使用绝对路径运行命令/opt/aws/apitools/ec2/bin/ec2-describe-addresses