You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派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添加免密权限:

  1. 编辑sudo配置文件:
sudo visudo
  1. 在文件末尾添加一行:
www-data ALL=(ALL) NOPASSWD: /home/pi/Python/hps_get_voltage_fraction_from_mcp3008.py
  1. 保存退出(按Ctrl+O确认写入,回车,再按Ctrl+X退出)
  2. 修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:52:36