Comando Apache Run Command Line

1

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 este post de blog , mas ainda não funciona.

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: 
    
por Undo 03.04.2013 / 20:45

2 respostas

2

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)");
    
por 03.04.2013 / 21:02
1
A variável

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

    
por 03.04.2013 / 21:07