【问题标题】:wkhtmltopdf not working in php scriptwkhtmltopdf 在 php 脚本中不起作用
【发布时间】:2014-09-24 13:35:58
【问题描述】:

我想使用 wkhtmltopdf 进行 HTML 到 PDF 的转换。

当我尝试通过 linux 终端转换它时,它工作正常。

但是当我尝试使用 php 脚本时它不起作用。

我正在尝试直接执行二进制文件。

这是我正在尝试使用 PHP 的代码。

exec('/home/binary_loc/wkhtmltopdf http://www.google.com /home/user/output.pdf');

我的二进制文件位于“index.php”所在的同一文件夹中。

我尝试用 PHP 获取 wkhtmltopdf 二进制文件的版本,然后它返回版本。

但我不明白为什么不能用 php for pdf 执行。

这是使用 php 进行版本检查的代码。

error_reporting(E_ALL);
ini_set('display_errors', '1');
$cmd = "./wkhtmltopdf --version";
$t = shell_exec($cmd);
echo $t;
exit()

有人有解决办法吗?

我想要这个,因为这也适用于共享主机。无需在服务器中安装 wkhtmltopdf。

【问题讨论】:

  • 您是否检查过二进制文件的系统位,例如 32 或 64
  • 是的,我已经检查过了。它的 32 位

标签: php wkhtmltopdf


【解决方案1】:

Exec 可能没有执行该文件的权限。 PHP 通常以apachenobody 运行,而不是您的用户帐户。您必须确保为运行它的任何用户设置了执行位。您可以使用其所在目录中的chmod 755 wkhtmltopdf 来授予所有用户读取和执行权限。

请注意,在某些共享主机上,exec() 被禁用。请与您的主机核实以确保您可以访问它。

【讨论】:

    【解决方案2】:

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

    要调试,请尝试以下操作:

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

    在文件中传递错误

    【讨论】:

    • 我也试过那个。有什么办法可以调试吗?
    • 您可以将错误通过管道传输到文件中。否则,获取完整的路径并在您的网络用户下运行。也许你没有足够的权利。
    • 您可以查看您的 apache 错误日志。通常你可以在那个文件中看到 wk 的输出。
    猜你喜欢
    • 2013-08-14
    • 2011-06-20
    • 2018-10-23
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    相关资源
    最近更新 更多