2015-06-29 4 views
0

я пытаюсь выполнить эту команду PHP:Выполнить Python с PHP

$result = exec("sudo python /home/pi/test.py",$output, $ret); 
var_dump($result); 
echo "<br>"; 
var_dump($output); 
echo "<br>"; 
var_dump($ret); 

Эта команда отлично работает на Linux Terminal, но с PHP не работает.

Здесь результат на странице PHP:

string(0) 
array(0) { } 
int(9) 

Я проверил процесс с ps -ef, ничего не появляется.

+1

Вы выполняете это в браузере? Если да, то apache (вероятный пользователь, выполняющий php) имеет права sudo без пароля? – kainaw

+1

Вышеприведенный код, вероятно, выполняется пользователем 'www-data' или чем-то аналогичным (варьируется между дистрибутивами) - разрешен ли пользователь выполнять' sudo'? Редактировать: @kainaw избили меня буквально 5 секунд :) –

+0

@kainaw Да, я выполняю это с помощью веб-браузера. Уже сделано, я изменил файл/etc/sudoers, добавив эту строку: www-data ALL = (ALL) NOPASSWD: ALL – Bacara

ответ

0

Возможно, это поможет кому-то с той же проблемой. мне удалось позже выполнить скрипт на Python с этим PHP код:

$command = escapeshellcmd('sudo /home/pi/test.py'); 
$output = shell_exec($command); 
echo $output; 

На данный момент, я никогда не удастся выполнить это в фоновом режиме. Я пробую эти решения:

$command = escapeshellcmd("sudo /home/pi/test.py >/dev/null &"); 

$command = escapeshellcmd("sudo /home/pi/test.py &"); 

Моя страница PHP ждет также завершения процесса, но я не хочу этого делать.

Смежные вопросы