从PHP调用时,Python中的import RPi.GPIO as GPIO不起作用
我遇到的问题和这个问题一样, 从PHP调用时Python导入失败 但现在是我另一个导入的问题。
这个脚本在命令行下运行正常(python uit.py
),还有一个test.py
脚本也能正常输出'hello',但是当我从PHP调用uit.py
(下面的代码)时,它就不工作了。
我得到的只是返回代码1,我尝试了exec()、passthru()和system(),
但它们都只返回'1',没有其他信息。
我对Linux和Python还很陌生,所以我不知道怎么设置导入的路径为绝对路径,而不是相对路径(如果这样能解决问题的话)。
#!/usr/bin/python
# Hello world python
import RPi.GPIO as GPIO
print "Start";
GPIO.setmode(GPIO.BOARD);
GPIO.setup(16, GPIO.OUT)
GPIO.output(16, True)
print "Licht uit";
编辑:
我现在注意到,当我从命令行运行这个脚本时,我需要加上sudo
,因为这个脚本说它想以root
身份运行(如果不以root身份运行,我会收到一个错误,提示'可能需要以root身份运行?')。
这可能是它不工作的原因吗?因为这个Python脚本是以PHP运行的用户身份被调用的?
我确实尝试过用sudo
执行这个语句(见评论),但我也听说过PHP用户可能没有权限使用sudo
?
1 个回答
1
我现在注意到,当我从命令行运行这个脚本时,我必须用sudo来执行,因为脚本说它想以root用户身份运行(如果不以root身份运行,我会收到一个错误提示,内容是“也许以root身份运行?”)。
这会是它不工作的原因吗?因为这个Python脚本是以PHP运行的用户身份被调用的?
是的,这就是你的问题。网页服务器是以www-data
这个用户身份运行的,而不是以root身份运行。(这个用户默认是没有sudo权限的。)如果你查看网页服务器的错误日志,你可能会在里面看到“也许以root身份运行?”这个错误信息。