2013-09-08 3 views
4

решенногоНевозможно выполнить питон скрипт PHP

Прежде чем писать новый вопрос я искать решение по всей сети. У меня есть малина pi с apache2, php5.4, ssl. Я хочу выполнить скрипт python из php one. PHP-скрипт находится внутри/var/www, который имеет разрешение 777. Php файл:

shell_exec('python /home/pi/Desktop/Python/prova.py'); 

Prova.py имеет 750 разрешение, но его владелец группы является WWW-данных, который пользователь печатается shell_exec ('WHOAMI'); который работает. Prova.py:

print "Hello World" 

Скрипт работает непосредственно из командной строки:

php filename.php 

Он не работает с Broswer!

Наконец-то мне удалось выполнить сценарий из браузера. я должен был добавить пользователь WWW-данные в sudoers файл с соответствующим разрешением:

www-data ALL=(ALL) NOPASSWD: /etc/bin/python 
+1

'Prova.py'! =' Prova.py', проверьте, что на самом деле является именем вашего скрипта python. Появляется ли сообщение об ошибке (проверьте журналы сервера)? Кроме того, у 'www-data' должно быть разрешение на доступ к'/home/pi/Desktop/Python/' – mata

ответ

3

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

Ваши групповые разрешения должны быть 7 независимо от того, что. Либо измените разрешения сценариев python на 777 (read-write-execute для всех), либо измените его на 770 и убедитесь, что пользователь ваших веб-серверов находится внутри группы, установленной в файл.

+0

Я попытался переместить prova.py в подкаталог var/www и теперь ... к счастью, он работает! – Luca

+0

Я попытался усложнить скрипт python, чтобы воспроизвести звук. Поэтому я импортировал библиотеки времени и pygame, проблема вернулась. Он работает из командной строки, но не через браузер – Luca

+0

Какие разрешения в настоящее время установлены в файле? –