2014-02-03 11 views
0

У меня есть файл питона в/USR/местные/бен я могу запустить его в любом месте в сервере с помощью addid.py --id [id]Запуск программы питона из PHP

И теперь мне нужно, чтобы запустить его из PHP файла: add.php?id=[id]

<?php 
$id = $_GET["id"]; 
$command = "addid.py --id $id"; 
$job = shell_exec($command); 
echo $job; 
print '<hr/>'; 
print $command; 
?> 

Страница загружается быстрее, но программа python работает дольше (~ 30 секунд). Также не вижу программу python в htop (диспетчер задач). Он выводит строку < hr> и результат $ command (string).

export PATH=$PATH:/usr/local/bin Также добавлен в /etc/sysconfig/httpd

Что не так?

+1

Вы действительно должны действительно выполнять '$ id = escapeshellarg ($ _ GET [" id "])', если вы не хотите, чтобы ваша система была принята. – dave

+0

@dave, Спасибо за полезную информацию, но ее не для публичного использования, вот почему мы не думаем о возможных хаках. –

ответ

0

Команде необходимо вызвать интерпретатор python, сейчас это просто имя файла.

$id = escapeshellarg($_GET["id"]); 
$command = "python addid.py --id $id"; 
$job = shell_exec($command); 
+0

его в/usr/local/bin/и в заголовке есть '#!/Usr/bin/python'. Поэтому в оболочке я могу просто ввести addid.py, и это работает. То же самое в shell-скрипте и задании cron. Не нужно писать питон перед именем программы. –

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