使用Exec()或Bindings从PHP生成PDF

时间:2012-03-30 21:04:04

标签: php macos pdf-generation wkhtmltopdf

运行Snappy时出现以下错误,这是WKHTMLTOPDF的PHP绑定:

Fatal error: Uncaught exception 'RuntimeException' with message 'The file '/Users/username/test.pdf' was not created (command: /usr/bin/wkhtmltopdf --lowquality '/var/folders/--/--ze9OC9GTSBW3tCl6UCR++++TQ/-Tmp-/knp_snappy4f761d35744a96.74626529.html' '/Users/username/test.pdf').' in /Applications/MAMP/htdocs/includes/wkhtmltopdf/Knp/Snappy/AbstractGenerator.php:261 Stack trace: #0 /Applications/MAMP/htdocs/includes/wkhtmltopdf/Knp/Snappy/AbstractGenerator.php(117): Knp\Snappy\AbstractGenerator->checkOutput('/Users/username...', '/usr/bin/wkhtml...') #1 /Applications/MAMP/htdocs/includes/wkhtmltopdf/Knp/Snappy/AbstractGenerator.php(127): Knp\Snappy\AbstractGenerator->generate('/var/folders/--...', '/Users/username...', Array, false) #2 /Applications/MAMP/htdocs/test.php(14): Knp\Snappy\AbstractGenerator->generateFromHtml('<h1>Test</h1>', '/Users/username...') #3 {main} thrown in /Applications/MAMP/htdocs/includes/wkhtmltopdf/Knp/Snappy/AbstractGenerator.php on line 261

但是,如果我通过命令行运行它们执行的操作,它就可以正常工作:

/usr/bin/wkhtmltopdf --lowquality '/var/folders/--/--ze9OC9GTSBW3tCl6UCR++++TQ/-Tmp-/knp_snappy4f761d35744a96.74626529.html' '/Users/username/test.pdf

由于这个工作只是找到,人们会认为我可以通过exec()函数或shell_exec()函数执行它,两者都没有返回任何内容(没有错误或任何东西)。执行'whoami'确实会返回我的用户名。

安全模式已关闭,wkhtmltopdf文件的权限设置为777。

我知道还有其他几个与此类似的线程,但是从最初的提问者那里得到的解决方案根本没有意义或根本没有解决方案。任何人都可以提供任何见解吗?

1 个答案:

答案 0 :(得分:3)

查看此答案的来源: http://oneqonea.blogspot.com/2012/04/why-does-wkhtmltopdf-work-via-terminal.html

在MAMP的/ Applications / MAMP / Library / bin / envvars文件中,您会注意到以下两行:

DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH

如下所示评论它们两者(注意每行上的“#”前缀):

#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH

最后,在同一个文件中,添加以下命令以确保PHP从Apache继承的$ PATH环境变量包含包含wkhtmltopdf可执行文件的目录。您的命令将类似于:

export PATH=/parent/path/of/wkhtmltopdf/executable:$PATH