Генерация PDF из PHP с использованием Exec () или Bindings - PullRequest
1 голос
/ 31 марта 2012

Я получаю следующую ошибку при запуске Snappy, PHP-привязки для WKHTMLTOPDF:

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 Ответ

3 голосов
/ 10 апреля 2012

Проверьте источник этого ответа по адресу: 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

Наконец, в том же файле добавьте следующую команду, чтобы убедиться, что переменная среды $ PATH, унаследованная PHPиз Apache включает в себя каталог, содержащий ваш исполняемый файл wkhtmltopdf.Ваша команда будет выглядеть примерно так:

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