我有一个包含shell_execute()
的PHP脚本,它执行的命令通常需要sudo。 我用visudo编辑了sudoers来包含以下内容:
www-data ALL = NOPASSWD: /var/root/node/npm/node_modules/less/
%users ALL = NOPASSWD: /var/root/node/npm/node_modules/less/
我怀疑这两种方法都应该起作用,但是我肯定会采用皮带悬挂式方法。
我正在用vim编辑etc / sudoers,所以添加这些行后,我执行:x,一切正常。 我的PHP脚本执行了预期的工作,大约需要10-15分钟。 然后脚本停止工作。 具体来说, shell_exec()
停止工作。
如果我再次执行sudo visudo
,我的新行仍然存在。 但是只有当我再次保存它时,脚本才会再次开始工作。
谁能告诉我为什么会这样吗? 我有两个不太好的猜测:
- 当我对
sudo visudo
启动时,会有某种宽限期开始,这就是允许我的脚本正常工作的原因(但只有在它到期之前)。 - etc / sudoers中的新数据仍保存在sudoers.tmp(“锁定文件”)中。