Apache-2.2
Apache 執行命令行命令
我正在開發在 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:
在腳本中添加整個路徑:
echo exec("echo 'testing'; sudo /opt/aws/apitools/ec2/bin/ec2-describe-addresses -O (Access Key Removed) -W (Secret Key Removed)");
未設置 PATH 變數
ec2-describe-addresses
所以你有兩個選擇
選項1
使用設置 PATH
export PATH=$PATH:/opt/aws/apitools/ec2/bin/
選項2
使用絕對路徑執行命令,即
/opt/aws/apitools/ec2/bin/ec2-describe-addresses