我有一个脚本,调用以下命令获取未读邮件数:
sudo ls /var/vmail/username/new | wc -l
当从shell运行时,它可以正常工作(权限设置正确,无需提供密码即可正常运行)。
但是,当使用exec
从PHP运行时,它虽然按预期执行,但总是返回0
。
可能是什么原因导致的?如何调试或解决此问题?
(php 5.3,redhat,apache与~默认配置)
编辑
感谢ruaks
的提示。问题是:sudo: sorry, you must have a tty to run sudo
。注释掉/etc/sudoers
中的条目有所帮助:
Defaults requiretty
Defaults:apache !requiretty
但是这似乎不太有利于安全。有其他更好的解决方案吗?
exec
从PHP运行sudo ls /var/vmail/username/new 2>&1
时,会得到什么结果? - ruakh