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

PHP无法执行含sudo的系统命令问题求助(Raspbian/Debian LAMP环境)

解决方案:通过PHP执行含sudo的脚本

问题根源

你的PHP脚本由Web服务器(Apache)的www-data用户运行,而非你登录的pi用户,因此给pi配置的NOPASSWD权限对Web进程无效;同时sudo默认要求终端(tty),而Web进程没有交互式终端,导致报错sudo: no tty present and no askpass program specified。

分步解决

1. 给www-data配置最小权限的免密码sudo

运行sudo visudo,在文件末尾添加以下行(仅授权需要的命令,避免过度开放权限):

www-data ALL=(ALL) NOPASSWD: /usr/bin/pkill, /sbin/reboot

保存退出(visudo中按Ctrl+O保存,Ctrl+X退出)。

2. 移除脚本中的冗余sudo

既然www-data已经有权限免密码执行目标命令,直接修改test.sh:

#!/bin/bash
pkill chromium-browse
reboot

3. 修正脚本权限

无需给脚本777权限(存在安全风险),执行以下命令确保www-data能读取并执行脚本:

chmod 755 test.sh

验证

访问test.php页面,正常情况下返回码应为0,脚本会执行pkill和reboot操作。

提示:给Web服务器用户sudo权限存在安全风险,务必仅授权必要命令,不要使用NOPASSWD: ALL。

内容的提问来源于stack exchange,提问作者Chiwda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:20:45