2016-01-26 3 views
0

обновление:малина пи: Невозможно выполнить script.py из PHP

после консультации в комментариях я нашел мой Error.log (/var/log/apache2/error.log):

Traceback (most recent call last): 
File "/var/www/html/nano.py", line 7, in <module> 
GPIO.setup(17,GPIO.OUT) 
RuntimeError: No access to /dev/mem. Try running as root! 

я решить мою проблему, добавив Суда:

<?php 
echo exec("sudo /usr/bin/python /var/www/html/nano.py"); 
?> 

, но я до сих пор не понимаю. Мне нужно запустить его как sudo, когда я вызываю nano.py с моего веб-сервера, но когда я запускаю nano.py с моего терминала (как пользователь pi), мне не нужно запускать его как sudo. Я думал, что я получил доступ к корневому файлу Apache, когда редактировал sudoers.

любой, кто может это объяснить? и это безопасно? (Мой апач сервер доступен только из моей собственной сети Wi-Fi сейчас)


Я знаю, что этот вопрос был задан и ответил много раз, но я пробовал все решения я мог бы найти, но я до сих пор не могу выполните мой скрипт.py с моей веб-страницы PHP.

Я могу выполнить мой nano.py скрипт из терминала: nano.py

Мой сервер Apache также работает отлично (я может отображать текст, если я хочу)

nano.py сценарий:

#!/usr/bin/env python 
import RPi.GPIO as GPIO 
import time 
GPIO.setmode(GPIO.BCM) 
GPIO.setwarnings(False) 
GPIO.setup(17,GPIO.OUT) 
print "LED on" 
GPIO.output(17,GPIO.HIGH) 
time.sleep(1) 
print "LED off" 
GPIO.output(17,GPIO.LOW) 

Я питон скрипт под названием nano.py расположен по адресу: /var/www/html/nano.py (-rwxrwxrwx 1 пи WWW-данных 236 26 января 13:12 nano.py) и /дома /pi/nano.py (-rwxr-хт-х 1 пи пи 225 26 января 13:19 nano.py) сценарии оба та же:

<?php 
    echo shell_exec("python /var/www/html/nano.py"); 
?> 

Я пробовал много вещей, но я могу» т выполнить nano.py из моего PHP страницы:

  • пробовал разные пути (/var/www/html/nano.py /home/pi/nano.py nano.py)
  • пытался shell_exec, Exec
  • пробовал различные пути python (python/usr/bin/python)

Я попытался дать доступ апач SUDO:

www-data ALL=(ALL) NOPASSWD:ALL 

Я не знаю, что другие варианты у меня есть, Так что я надеюсь, что кто-то может мне помочь.

+1

Проверьте [сайт малины Pi SE] (http://raspberrypi.stackexchange.com/) – wpercy

ответ

1

Попробуйте

<?php 
    echo shell_exec("/usr/bin/python /var/www/html/nano.py"); 
?> 

Скорее всего, ваш питон двоичный не может быть найден. Также убедитесь, что эти функции не заблокированы вашим php.ini.

Если это не работает, /var/log/apache2/error.log может рассказать вам больше об ошибке.

+0

Зачем OP «попробуйте это»? *** Хороший ответ *** всегда будет объяснять, что было сделано, и почему это было сделано именно так, не только для OP, но и для будущих посетителей SO. –

+0

попробовал это и многие другие опции: #echo shell_exec ("/ usr/bin/python /var/www/html/nano.py"); \t #echo shell_exec ("python /var/www/html/nano.py"); \t #echo shell_exec ("/ usr/bin/python /home/pi/nano.py"); \t #echo shell_exec ("python /home/pi/nano.py"); \t echo exec ("/ home/pi/nano.py"); ?> – washichi

0

Сервер tomcat, скорее всего, запускается под учетной записью пользователя «tomcat». Вероятно, поэтому вам нужна команда sudo.

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