2016-01-26 226 views
0

更新:樹莓派:無法從PHP執行script.py

中,我發現我的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"); 
?> 

但我還是不明白。 當我從我的web服務器調用nano.py時,我需要將它作爲sudo運行,但是當我從終端運行nano.py(作爲pi用戶)時,我不必將其作爲sudo運行。 我以爲我在編輯sudoers時給了apache root權限。

任何人都可以解釋這一點? 這是安全嗎? (我的Apache服務器從我自己的wifi網絡,才能訪問現在)


我知道這個問題已經被問,並回答了很多次,但我已經嘗試每一個解決方案,我可以找到,但我現在還不能從我的PHP網頁執行我的script.py。

我可以從終端執行我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 Python腳本位於: /var/www/html/nano.py(-rwxrwxrwx 1個PI www數據236 1月26日13:12 nano.py) 和 /家庭/pi/nano.py(-rwxr-XR-X 1屁屁225 1月26日13:19 nano.py) 腳本都是一樣的:

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

我試過很多東西,但我可以」牛逼從我的PHP頁面執行nano.py:

  • 嘗試了不同的路徑(/var/www/html/nano.py /home/pi/nano.py nano.py)
  • 試過了shell_exec,EXEC
  • 嘗試過不同的python路徑(python/usr/bin/python)

我試圖讓apache的sudo訪問:

www-data ALL=(ALL) NOPASSWD:ALL 

我真的不知道我有什麼其他選擇, 所以我希望有人能幫助我。

+1

看看[Raspberry Pi SE site](http://raspberrypi.stackexchange.com/) – wpercy

回答

1

嘗試

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

最有可能你的Python二進制文件無法找到。另外請確保這些功能不被你的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命令的原因。