WKHTMLTOPDF在命令行上工作,但从PHP生成时返回0字节的pdf


WKHTMLTOPDF works on command line, but returns 0 byte pdf when generating from PHP

我正在使用WKHTMLTOPDF生成PDF。它一直运行良好,但我们最近更改了服务器,现在它只从我们的PHP管理面板返回0字节的文件。

奇怪的是,如果我从ssh运行下面的程序,它会生成很好的结果。我想这可能是www数据权限的问题,但我无法解决:(

WKHTMLTOPDF位于/usr/local/bin/wkhmtltopdf,我们使用httpd和centos。

如果需要更多信息,我很乐意尝试提供。我似乎也找不到任何wkhtmltopdf的日志,它没有进入httpd日志。

感谢您的帮助!拔出我的头发:p

编辑:这是我用来生成PDF的代码-它已经在旧的服务器上工作了

PDF::setOutputMode('F'); // force to file
    PDF::setPageSize('a0');
    $gen = PDF::html('pdf.print.web', [
        'products' => $catalogue,
        'name' => $master->name
    ], storage_path()."/pdf/gen-".$master->url);
    return Response::download(storage_path()."/pdf/gen-".$master->url.'.pdf');

A在使用wkhtmltopdf CLI(而非PHP)时也遇到了类似的问题。这最终成为了一个许可问题。

我做的时候:

wkhtmltopdf http://google.com google.pdf

操作会成功,但会生成一个0字节的pdf。没有引发错误。

我做的时候:

sudo wkhtmltopdf http://google.com google.pdf

pdf有内容。因此,请确保相关用户对命令本身以及您要写入文件的位置具有r/w/e权限。还要确保他们有权发出出站web请求(如果相关),并且服务器已配置为允许这样做。一旦权限得到修复,您实际上就不需要sudo了。

希望这能有所帮助。