从PHP执行wkhtmltopdf
我在Linux命令行中可以很好地工作: wkhtmltopdf entry.html output.pdf 但以下内容在PHP代码中不起作用: exec('wkhtmltopdfentry.html output.pdf') 有趣的是,我在谷歌上搜索了很多未经检查的解决方案,但没有解释为什么这是一个问题。从PHP执行wkhtmltopdf,php,wkhtmltopdf,html2pdf,Php,Wkhtmltopdf,Html2pdf,我在Linux命令行中可以很好地工作: wkhtmltopdf entry.html output.pdf 但以下内容在PHP代码中不起作用: exec('wkhtmltopdfentry.html output.pdf') 有趣的是,我在谷歌上搜索了很多未经检查的解决方案,但没有解释为什么这是一个问题。 如果您有好的,谢谢。也许wkhtmltopdf不在www数据的路径变量中 whereis wkhtmltopdf 将告诉您二进制文件的位置;二进制文件通常驻留在*nix机器上的/usr/bi
如果您有好的,谢谢。也许
wkhtmltopdf
不在www数据的路径变量中
whereis wkhtmltopdf
将告诉您二进制文件的位置;二进制文件通常驻留在*nix机器上的/usr/bin/…
中。然后将命令中的wkhtmltopdf
替换为例如/usr/bin/wkhtmltopdf
,如下所示
/usr/bin/wkhtmltopdf entry.html output.pdf
wkhtmltopdf有,其中一个是PHP。你可以试一试。就我而言,有一个简单的解决方案:我没有意识到PHP处于安全模式。关闭了安全模式,工作正常 也有同样的问题,我认为其他人不应该浪费超过3个小时: 解决方案如下: 您只需安装xvfp“模拟x环境”
这里是一个围绕wkhtmltopdf的PHP包装
非常简单我也在努力解决同样的问题 我在
Windows2008R2
服务器上使用PHP5.4
的解决方案:
exec('C:\inetpub\wwwroot\mywebsite\subdir\wkhtmltopdf input.html output.pdf');
这是一个名为output.txt的新文件,它被重命名为output.pdf,并授予用户“所有人”权限
以下是我的选拔赛:
exec(C:\inetpub\wwwroot\mywebsite\wkhtmltopdf );
echo(exec(wkhtmltopdf.exe cache.html output.pdf));
exec("xvfb-run -a wkhtmltopdf test.html output.pdf")
$execute = "xvfb-run -a wkhtmltopdf cache.html output.pdf";
$out = shell_exec("/path/to/wkhtmltopdf --version"); echo($out);
$out = passthru('/usr/local/bin/wkhtml2pdf
希望这些对其他人有用如果PHP调用的子shell最终具有与标准默认shell不同的路径设置,您可能需要指定可执行文件的绝对路径,例如
exec(/usr/bin/wkhtmltopdf…
)。同样,如果您在基于web的脚本中执行exec,那么权限也将是一个因素。您是否收到任何PHP错误消息?当您直接在shell中键入时会发生什么?检查apache错误日志,您可能会在那里找到答案(像我一样)type-P'wkhtmltopf'
比whereis
更可靠。我也尝试过:$input=getcwd()。“/entry.html”;$output=getcwd()。“/output.pdf”;exec('/usr/bin/wkhtmltopdf$entry$output');但结果相同。@user238831,然后尝试getcwd()
()验证脚本是否在正确的目录中执行。-看看getcwd()
返回的内容。@Alix Axel--请详细说明,或提供来源。@user238831--当然执行exec
语句,如果您没有注释掉它的话。使用$output=passthru('/usr/local/bin/wkhtml2pdf/tmp/foo.html/bar/foo.pdf');echo$输出
以便您可以查看wkhtml2pdf
的命令行执行是否抱怨任何问题。有趣的是,只需浏览一下即可。然而,这个命令对我来说是最方便的,因为我想在运行中进行转换。那么,为什么不执行exec调用呢?
exec(C:\inetpub\wwwroot\mywebsite\wkhtmltopdf );
echo(exec(wkhtmltopdf.exe cache.html output.pdf));
exec("xvfb-run -a wkhtmltopdf test.html output.pdf")
$execute = "xvfb-run -a wkhtmltopdf cache.html output.pdf";
$out = shell_exec("/path/to/wkhtmltopdf --version"); echo($out);
$out = passthru('/usr/local/bin/wkhtml2pdf