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

2022-08-30 13:18:34

我有一个特定的PHP脚本,它调用exec()来执行将PDF转换为JPG的命令。此命令在 bash 中工作正常。

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

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

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

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

我也尝试过用system()切换exec()。

最后,我过去曾经遇到过这个问题,但不记得我是如何修复的。

我知道我错过了一些东西,所以我希望其他人像我一样经历过这种情况,并记得如何解决它!

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

亚历克斯


答案 1

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


答案 2

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


推荐