【发布时间】:2010-12-14 13:29:46
【问题描述】:
这是我的命令:
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
现在,这是什么意思?!
【问题讨论】:
-
在shell中运行时有输出吗?
-
不,我尝试回显输出,根本没有输出
-
你能用 sudo 任何其他命令吗?
-
将 /bin/ls 添加到 sudoers 并使用 shell_exec 执行了
sudo ls,没有输出 -
尝试使用php.net/manual/en/function.exec.php 来检索输出而不是shell_exec...