PHP exec()在通过浏览器执行时不会执行shell命令

Ale*_*lex 32 php system exec

我有一个PHP脚本调用exec()来执行命令将PDF转换为JPG.这个命令在bash中工作正常.

要抢占您的初步故障排除猜测,请注意以下事项:

  • safe_mode =关闭
  • 包含PDF和脚本的目录的权限设置为777,此目录也是写入JPG的位置.
  • 我传递给exec()的命令显式指向正在使用的二进制文件(例如/ usr/local/bin/convert).
  • display_errors = On
  • error_reporting = E_ALL
  • disable_functions = [空白]
  • 我正在回显exec()的输出,它什么也没有返回.默认运行的命令不返回任何内容.

当我从浏览器调用此PHP脚本(访问http://www.example.com/script.php)时,exec()不会执行其参数.

重要提示:我知道我的脚本或构建bash命令的方式没有问题,因为从bash开始,我可以用'php'执行脚本并且它可以工作(例如'php script.php'转换文件)

我也尝试用system()切换exec().

最后,我曾经有过这个问题,但是不记得我是怎么修的.

我知道有一些我缺少的东西,所以我希望其他人像我一样体验过这一点,并记得如何解决它!

提前感谢您提供的任何帮助.

亚历克斯

Gre*_*reg 69

添加2>&1到命令的末尾,将错误从stderr重定向到stdout.这应该清楚地表明出了什么问题.


Tom*_*nto 6

只是猜测一下,可能是您的Web服务器进程用户没有权限这样做.


Cha*_*rch 5

因为它来自命令行(在你自己的用户帐户下),所以听起来像Web服务器运行的帐户(通常是"www-data")没有转换程序的执行权限.

  • 有人如何授予权限? (2认同)