2010-12-14 110 views
0

这里是我的命令:了shell_exec不工作

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脚本,并在浏览器中运行它,进一步确保了这一点。这告诉我脚本确实正在运行someuser

此外,safe_mode已关闭。

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

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

现在,这是什么意思?

+0

它在shell中运行时是否输出某些内容? – Catalin 2010-12-14 13:32:23

+0

不,我试着回显输出,根本没有输出 – HyderA 2010-12-14 13:33:40

+0

你可以申请任何其他的命令,并且工作吗? – JohnSmith 2010-12-14 13:45:08

回答

1

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

+0

很高兴我可以帮助您进行调试:P – Catalin 2010-12-14 15:20:15

+0

您可以使用sudoers上的此条目为单个用户启用requiretty:默认值:someuser!requiretty – timh 2011-10-28 21:33:47

0

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

+0

获取没有sudo的权限错误 – HyderA 2010-12-14 15:04:21

+0

您能否提供特定的错误消息? '/ home/someuser/public_html/reports/images/r121662.jpg'和'/ home/someuser/public_html/reports/images /'有什么权限? – 2010-12-14 21:17:39

0

尝试sudo -S以查看是否将它设置为从标准输入读取密码(即使它不需要一个密码)将绕过tty的测试。