Adicione o caminho completo no seu script:
echo exec("echo 'testing'; sudo /opt/aws/apitools/ec2/bin/ec2-describe-addresses -O (Access Key Removed) -W (Secret Key Removed)");
Estou trabalhando em um servidor da Web em execução no Apache no Linux. Eu estou tentando usar a chamada system()
do PHP para usar as ferramentas de linha de comando do Amazon EC2 ( ec2-describe-instance
, etc). No entanto, isso não funciona. Página da Web não mostra o resultado (outros comandos como echo
funcionam bem).
Meu código PHP se parece com:
<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");
?>
EutenteiusarousuáriodoApacheparatestarocomando,eéissoqueeurecebo:
[ec2-user@ip-xx-xxx-xx-xxxec2testing]$sudosuapachebash-4.1$ec2-describe-addressesbash:ec2-describe-addresses:commandnotfound
Oscomandosparecemnãoestar'instalados'paraousuáriodoApache.
Eutenteiusarométododescritoem
Há algo que me falta?
EDITAR: Usando isto:
echo exec("echo 'testing'; sudo ec2-describe-addresses -O (Access Key Removed) -W (Secret Key Removed)");
me dá isso:
bash-4.1$ php index.php
<h1>Beginning System Call</h1>
php started</br>[sudo] password for apache:
PATH não está definida para ec2-describe-addresses
Então você tem duas opções
Opção1
Defina o PATH usando
export PATH=$PATH:/opt/aws/apitools/ec2/bin/
Opção2
executa o comando usando caminho de abosolute, por exemplo, /opt/aws/apitools/ec2/bin/ec2-describe-addresses