2014-09-24 149 views
3

我想使用wkhtmltopdf进行HTML到PDF的转换。wkhtmltopdf不能在php脚本中工作

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

但是,当我用PHP脚本尝试它不起作用。

我想直接执行二进制文件。

这里是我想用PHP的代码。

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

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

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

但我不明白为什么不能用pdf执行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 – 2014-09-24 13:54:52

+0

是的,我已经检查过它。它的32位 – user3305818 2014-09-25 07:33:48

回答

0

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

要调试尝试这样的事:

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

管错误的文件

+0

我也试过了。有什么方法可以调试它吗? – user3305818 2014-09-24 13:52:11

+0

您可以在文件中传送错误。否则,请使用完整的路径并在您的Web用户下运行该路径。也许你没有足够的权利。 – Stony 2014-09-24 13:56:20

+0

你可以检查你的apache错误日志。通常您可以在该文件中看到wk输出。 – Stony 2014-09-24 13:57:04

0

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

请注意,在某些共享主机上,exec()已禁用。检查你的主机,确保你有权访问它。