Apache-2.2

Apache 執行命令行命令

  • April 3, 2013

我正在開發在 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

引用自:https://serverfault.com/questions/495857