2015-03-03 3 views
-1

У меня возникают проблемы с запуском скрипта python через PHP. Я могу запустить свой скрипт python вручную без проблем, но не могу запустить его через PHP. Я вызываю PHP-скрипт с веб-страницы, где я хочу выполнить скрипт python. Я искал все, чтобы попытаться понять это, но я не могу заставить его работать. Я попробовал exec(), system(), shell_exec() и т. Д., Чтобы запустить сценарий без успеха. Я также сделал chmod + x в скрипте python. Я пробовал такие вещи, какPHP вызов python не работает

<?php 
exec('/usr/bin/python /root/Desktop/ledtest.py'); 
?> 

Есть ли у кого-нибудь другие предложения?

Редактировать: Я пытаюсь дать больше информации, но, к сожалению, я не могу. Я просто вошел в эту компанию в качестве стажера, и я пытаюсь подобрать место, где остановился предыдущий стажер (это огромный беспорядок, и никто, кажется, не знает, что здесь происходит). Извините за недостаток информации

+1

Так что же происходит, когда вы пытаетесь запустить сценарий? – yole

+0

Можете ли вы рассказать нам, что работает веб-сервер? Apache, nginx, lighttpd и т. Д.? Когда вы говорите «но не можете запустить его через PHP», что вы имеете в виду? Вы имеете в виду, что он не запускает скрипт при посещении веб-страницы? Или вы имеете в виду, что вы вызываете скрипт напрямую (командной строки)? – vastlysuperiorman

ответ

0

Какое сообщение об ошибке вы получаете, поскольку PHP имеет какой-то предел, например 30 секунд, вы можете легко найти из вызова phpinfo() и поиска в файле max_execution_time. вы можете изменить это из сценария на более высокое значение, если вам нужно, используя ini_set ('max_execution_time', 1200); и вы можете получить другую информацию о max_execution_time из этого вопроса: stackoverflow.com/questions/4220413/...

Кроме того,

Независимо от того, какая ошибка python поднимается, он будет идти к stderr ребенка. Попробуйте либо говорить PHP для чтения из STDERR, или (в Python) это сделать:

импорт SYS sys.stderr = sys.stdout

+0

Я вообще не получаю ошибку от PHP или python. Вот почему я так смущен. Кажется, что все работает нормально, но это не – vrady

0

Для начала, вы должны знать, что обеспечивает более конкретные детали (шаги к воспроизводить ошибки, фактические сообщения об ошибках, программное обеспечение и версию веб-сервера и т. д.) даст лучшие ответы.

Проблема, скорее всего, связана с разрешениями вашего веб-сервера. Когда вы проверяете код, вы, вероятно, вызываете PHP вручную (например, php myscript.php) или, возможно, просто вызываете python напрямую.

Прежде всего, проверьте, какой пользователь работает под веб-сервером. Например, apache может работать как «apache», «nobody» или «www-data» в зависимости от вашей конфигурации. Затем убедитесь, что у этого пользователя есть разрешение на выполнение скрипта python. Это может быть возможно с помощью конфигурации типа ExecCGI в настройках вашего веб-сервера. В качестве альтернативы вы можете решить добавить права sudo для выполнения сценария, а затем включить «sudo» в свой php exec.

ПРИМЕЧАНИЕ: Это очень плохая идея дать общий доступ SUDO к веб-серверу. Если вы сделаете это, убедитесь, что вы предоставляете доступ только к одному сценарию и убедитесь, что ваш сценарий не может быть дырой в безопасности.

Возможно, лучшим решением было бы, чтобы ваш веб-сервер выполнял Python напрямую с помощью расширений, плагинов, модулей или того, что ваш конкретный сервер использует для выполнения сценариев CGI.

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