树莓派5中PHP调用Python脚本遇Permission denied权限问题求助
问题:树莓派5上PHP调用Python脚本提示权限拒绝
问题详情
在树莓派5的Debian 12(bookworm)系统中,运行以下PHP代码调用Python脚本:
$id = 0; $message = exec("/home/pi/Python/hps_get_voltage_fraction_from_mcp3008.py ".$id." 2>&1"); return $message;
返回错误:
sh: 1: /home/pi/Python/hps_get_voltage_fraction_from_mcp3008.py: Permission denied
脚本权限与所有权信息:
pi@raspberrypi:~/Python $ ls -l total 4 -rwxrwxrwx 1 www-data www-data 372 Dec 2 18:18 hps_get_voltage_fraction_from_mcp3008.py
PHP进程运行身份:执行exec('whoami')返回www-data。
已尝试修改脚本所有权但无效,使用sudo调用时会要求输入密码。
系统环境
pi@raspberrypi:~/Python $ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"
解决方法
1. 修复目录访问权限
脚本本身权限为777,但上级目录可能限制了www-data的访问权限。执行以下命令开放目录权限:
chmod 755 /home/pi chmod 755 /home/pi/Python
2. 配置sudo免密执行
若必须通过sudo运行脚本,给www-data添加免密权限:
- 编辑sudo配置文件:
sudo visudo
- 在文件末尾添加一行:
www-data ALL=(ALL) NOPASSWD: /home/pi/Python/hps_get_voltage_fraction_from_mcp3008.py
- 保存退出(按
Ctrl+O确认写入,回车,再按Ctrl+X退出) - 修改PHP代码为:
$id = 0; $message = exec("sudo /home/pi/Python/hps_get_voltage_fraction_from_mcp3008.py ".$id." 2>&1"); return $message;
3. 检查脚本shebang行
确保Python脚本开头有正确的解释器路径,比如:
#!/usr/bin/env python3
如果缺少该行,添加后重新赋予执行权限:
chmod +x /home/pi/Python/hps_get_voltage_fraction_from_mcp3008.py
内容的提问来源于stack exchange,提问作者forenkema
相关产品推荐
相关产品推荐

