shell_exec无法正常工作

时间:2010-12-14 13:29:46

标签: php shell

这是我的命令:

sudo /usr/local/bin/jpegoptim --max=50 /home/someuser/public_html/reports/images/r121662.jpg

此命令用于压缩图像。我尝试使用反引号运算符和shell_exec运行此命令,两者都不起作用。该文件不会压缩。

但是当我直接在以someuser登录的shell中运行它时,此命令会运行。我已修改sudoers以接受命令而无需密码。当我在shell中运行文件时压缩文件。

Apache配置为使用suPHP运行,PHP文件也属于someuser。我通过编写一个测试PHP脚本,只是说system(id);并在浏览器中运行它来进一步确保这一点。这告诉我该脚本确实由someuser运行。

此外,safe_mode已关闭。

编辑:好的,我得到它输出错误

sudo: sorry, you must have a tty to run sudo

现在,这是什么意思?!

3 个答案:

答案 0 :(得分:1)

感谢Catalin,我得到了输出。它说sudo: sorry, you must have a tty to run sudo要求someuser禁用requiretty。这是我得到的最佳解决方案,如果有一种方法可以为单个用户调用单个命令禁用requiretty,请告诉我。

答案 1 :(得分:0)

sudo通常需要终端输入(即must have a tty),因为它会在允许您执行命令之前尝试询问用户密码。你真的需要使用sudo来运行命令吗?请尝试删除sudo

答案 2 :(得分:0)

尝试sudo -S查看是否将其设置为从stdin读取密码(即使它不需要密码)将绕过tty的测试。