Не удается выполнить wkhtmltopdf из PHP
Было несколько тем, похожих на мою, но они мне не помогли. Может быть, что-то новое появится.
Проблема: я не могу выполнить wkhtmltopdf форму PHP. Мой основной код: exec('wkhtmltopdf http://somesite.com /home/user/file.pdf');
Теперь несколько вещей, которые я уже проверил:
- та же команда работает при запуске из консоли
- Safe_mode отключен - я могу выполнять команды в PHP, например
exec('ls');
работает отлично - Путь к wkhtmltopdf можно найти, и я могу запустить саму программу, например
exec('wkhtmltopdf -V');
работает нормально и выводит информацию о версии - путь вывода доступен для записи, он имеет 777 разрешений и
exec('wkhtmltopdf -V > /home/user/file.pdf');
работает нормально, создает файл и помещает информацию о версии в - выполнение из PHP имеет доступ к Интернету, например
exec('wget -O /home/user/file.pdf http://somesite.com')
работает нормально, получает исходный код сайта и помещает его в файл - замена exec на passthru, shell_exec и т. д. не имеет значения
Вывод: я могу выполнить wkhtmltopdf, я могу получить доступ к Интернету, я могу написать конкретный файл, но правильная команда преобразования не выполняется и возвращает статус 1.
Я использую последнюю версию Ubuntu, версия PHP 5.3.10-1ubuntu3, версия wkhtmltopdf 0.9.9. Я попробовал это также на некоторой другой машине с теми же самыми повторениями.
Любые (просто ЛЮБЫЕ) идеи будут с благодарностью!
1 ответ
Добавлять 2>&1
до конца вашей команды, чтобы понять точную ошибку.
exec('wkhtmltopdf http://somesite.com /home/user/file.pdf 2>&1');
Таким образом, он сообщит вам об ошибке при запуске этого под Apache. Как только вы поймете, что не так, к нему легче обратиться. У меня раньше была похожая проблема с ImageMagick