php shell exec зависает при использовании wkhtmltopdf

Я пытаюсь создать PDF-файл из HTML с помощью PHP. Я использую Mac OS X в качестве среды разработки, хотя я хотел бы, чтобы этот код работал на рабочем Linux-сервере.

Пока у меня есть:

$url = escapeshellarg("http://www.google.com/");
$output = shell_exec("/usr/local/Cellar/wkhtmltopdf/0.11.0_rc1/bin/wkhtmltopdf " . $url . " /tmp/tmp_pdf.pdf 2>&1");
echo "<pre>$output</pre>";

Этот код создает PDF-файл в файле /tmp/tmp_pdf.pdf. Проблема в том, что это никогда не

echo "<pre>$output</pre>";

Браузер просто висит, говоря, что ожидает сервер....

Это похоже на то, что команда shell_exec никогда не завершается. Я заметил, что когда я запускаю wkhtmltopdf из терминала, он не выходит обратно в командную строку. Я получил:

Loading page (1/2)
Printing pages (2/2)                                               
Done 

Затем он также находится там, как и php-скрипт. Любые идеи?


person tdh87    schedule 04.08.2012    source источник
comment
Как узнать, что он ждет сервера?   -  person hakre    schedule 04.08.2012
comment
Какую версию wkhtmltopdf вы используете? Я только что протестировал статический двоичный файл wkhtmltopdf-0.9.9-OS-X.i368 на OS X 10.7.4, и он вернулся в командную строку сразу после вывода Done.   -  person rexmac    schedule 04.08.2012
comment
@rexmac Большое спасибо. Оказывается, я использовал доморощенный для установки wkhtmltopdf. Использование статического двоичного файла решило мою проблему.   -  person tdh87    schedule 04.08.2012


Ответы (1)


Проблема заключалась в версии, используемой, как указано rexmac. Использование статического двоичного файла для wkhtmltopdf устранило проблему для OP.

person Community    schedule 10.08.2012