wkhtmltopdf在PHP脚本中无法正常工作

3
我希望使用wkhtmltopdf将HTML转换为PDF。
当我尝试通过Linux终端进行转换时,它可以正常工作。
但是当我尝试使用PHP脚本时,它就无法工作了。
我正在尝试直接执行二进制文件。
这是我正在尝试使用的PHP代码。
exec('/home/binary_loc/wkhtmltopdf http://www.google.com /home/user/output.pdf');

我的二进制文件与 "index.php" 存在于同一文件夹中。
我尝试使用 PHP 获取 wkhtmltopdf 二进制文件的版本,然后它返回该版本。
但我不明白为什么不能使用 PHP 执行 PDF 文件。
以下是使用 PHP 进行版本检查的代码。
error_reporting(E_ALL);
ini_set('display_errors', '1');
$cmd = "./wkhtmltopdf --version";
$t = shell_exec($cmd);
echo $t;
exit()

有人针对此有解决方案吗?

我希望这样做,因为这样可以在共享主机上运行。无需在服务器上安装wkhtmltopdf。


1
你检查了系统位数的二进制,比如32位或64位吗? - user3270303
是的,我已经检查过了。它是32位的。 - user3305818
2个回答

0

定义 wkhtmltopdf 可执行文件的完整路径和输出文件夹的完整路径。

调试时可以尝试以下操作:

shell_exec("/home/binary_loc/wkhtmltopdf http://www.google.com /home/user/output.pdf > /home/user/debug.log 2>&1");

将错误输出到文件中


我也尝试过那个方法。有没有办法调试它? - user3305818
你可以将错误信息导入文件中,或者使用完整路径在 Web 用户下运行。也许你没有足够的权限。 - René Höhle
你可以检查你的Apache错误日志。通常你可以在那个文件中看到wk的输出。 - René Höhle

0

执行可能没有权限执行该文件。PHP通常以apachenobody的身份运行,而不是您的用户帐户。您需要确保对其运行的用户设置了执行位。您可以使用chmod 755 wkhtmltopdf命令在所在目录中为所有用户授予读取和执行权限。

请注意,在某些共享主机上,exec()被禁用。请与您的主机提供商确认您是否具有访问权限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接