从PHP调用时,Python中的import RPi.GPIO as GPIO不起作用

0 投票
1 回答
4153 浏览
提问于 2025-04-17 14:07

我遇到的问题和这个问题一样, 从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身份运行?”这个错误信息。

撰写回答