1

我目前正在 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 的解决方案不是我要寻找的,除非这个问题本身被证明是相关的到窗户)

4

3 回答 3

1

通过在临时目录中使用 fopen() 创建文件来检查权限。它会创建 pdf 吗?也许这个程序不会输出到 stdout,但 stderr 与 ffmpeg 相同。尝试在命令后添加“2>&1”。

或者,该软件使用了安装目录中的一些文件。首先尝试通过添加“cd c:\wkhtmltopdf;YOUR_COMMAND”之类的内容来更改目录

于 2010-07-28T10:17:38.417 回答
0

您可以使用 php 库来执行此操作,这将更加高效和集成。例如html2pdf

于 2010-07-28T10:14:39.360 回答
-1

删除这些环境变量设置>>

"DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"

#export DYLD_LIBRARY_PATH

它应该可以工作。

于 2012-09-11T02:54:58.117 回答