我目前正在 PHP 中构建一个使用WKHTMLTOPDF命令行应用程序生成 PDF 文档的类。
为此,我使用了对 shell_exec 的调用来调用 WKHTMLTOPDF 可执行文件。但是,这个特定的调用似乎没有被执行;它几乎立即返回 NULL。
我做的一个小测试给了我以下结果:
var_dump(shell_exec('ping nu.nl'));
// This prints a string, containting the expected output of the ping command
var_dump(shell_exec('"c:/wkhtmltopdf/wkhtmltopdf.exe" --orientation "Landscape" --page-size "A2" --margin-top "25mm" --margin-left "20mm" --margin-bottom "20mm" --margin-right "20mm" "http://www.nu.nl/" "C:/Temp/1280310218.pdf"'));
// This prints NULL
因此,shell_exec()
似乎正在工作,也safe_mode
已关闭,并且将完整命令粘贴到 cmd.exe确实可以正确运行命令。
如果问题不在上述任何一个中(安全模式、错误命令或shell_exec()
本身),还有什么可能呢?我能想到的只是用户权限问题,但可执行文件和它所在的目录对我系统上的每个用户组都具有完全访问设置。
(注意:虽然我在 Windows 机器上开发,但此代码将在生产环境中的 Linux 服务器上运行。因此,仅 Windows 的解决方案不是我要寻找的,除非这个问题本身被证明是相关的到窗户)