PHP exec 中的 wkhtmltopdf 调用导致退出代码 127 失败

PHP exec 中的 wkhtmltopdf 调用导致退出代码 127 失败

使用 CentOS 6.3x64。

我正试图wkhtmltopdf逃离这里) 从 PHP 脚本中执行。我可以wkhtmltopdf-amd64通过 SSH 直接成功调用。但是当通过 调用 PHP 时exec,它总是失败并显示退出代码 127。路径是正确的,所以这不是问题。我可以成功使用exec调用lsid,所以问题似乎特定于调用wkhtmltopdf-amd64

我推测这与权限有关,但我不确定要采取什么步骤。我尝试过apache:apache该程序的其他所有权,它有 755 个权限。

谢谢您的指导!

补充说明:

抱歉上面没有进一步说明——我已确认该问题与程序路径无关。我使用的是完整的绝对路径。我已确认可以从 SSH 行运行完全相同的命令而不会出现问题(无论pwd)。我还创建了一个 shell 脚本:

#!/bin/sh
echo 'hello, world!'

我可以通过调用此脚本exec,并且它正常工作。但是,如果我将其修改为

#!/bin/sh
echo 'hello, world!'
/full/path/to/wkhtmltopdf-amd64 'http://www.google.com/' /full/path/to/output.pdf

然后它会失败并返回退出代码 127。

答案1

您的 shell 似乎无法找到二进制文件。请尝试使用其完整路径名(例如,/usr/bin/ls而不是ls)来调用它。有关更多信息,请参阅man bash

答案2

我之前也遇到过同样的问题。在我的情况下,未设置执行位时返回 126,设置执行位时返回 127。

后来我发现这与系统中缺少一些共享库有关。即使二进制文件是静态链接的,它似乎也使用了系统中的一些共享库。

我真的不记得哪些库导致了这个问题,但要点如下:https://gist.github.com/nghuuphuoc/8282411我认为是一个很好的起点。

相关内容