使用CentOS 6.3×64。
我试图从PHP脚本运行wkhtmltopdf (从这里 )。 我可以直接通过SSH直接调用wkhtmltopdf-amd64 。 但是,当通过exec从PHP调用它时,它总是失败,退出代码为127.path是正确的,所以这不是问题。 我可以成功地使用exec来调用ls和id等,所以问题似乎是调用wkhtmltopdf-amd64 。
我会认为这与权限有关,但我不知道要采取什么措施。 我试过apache:apache和其他所有权的程序,它有755个权限。
感谢您的任何指导!
附加说明:
对不起,以上没有进一步澄清 – 我已经确认这个问题不涉及到程序的path。 我正在使用完整的绝对path。 我已经证实,完全相同的命令可以从SSH行运行没有问题(不pipepwd )。 我也创build了一个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。
你的shell似乎无法find二进制文件。 尝试使用完整path名(例如/usr/bin/ls而不是ls )来调用它。 有关更多信息,请参阅man bash
我曾经有过同样的问题。 在我的情况下,我得到了126没有执行位设置和127位设置。
后来我发现它与系统中缺less一些共享库有关。 即使二进制文件是静态链接的,它似乎使用了系统中的一些共享库。
我真的不记得哪个库导致了这个问题,但是这个要点是: https : //gist.github.com/nghuuphuoc/8282411是我认为的一个很好的起点。