Не удается выполнить 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

Другие вопросы по тегам