Назад | Перейти на главную страницу

Вызов wkhtmltopdf из PHP exec приводит к сбою кода выхода 127

Использование CentOS 6.3x64.

Я пытаюсь бежать wkhtmltopdf (из Вот) из сценария PHP. Я могу успешно позвонить wkhtmltopdf-amd64 напрямую через SSH. Но при вызове его из PHP через exec, всегда происходит сбой с кодом выхода 127. Путь правильный, так что проблема не в этом. Я могу успешно использовать exec звонить ls и id и т.д., поэтому проблема, похоже, связана с вызовом wkhtmltopdf-amd64.

Я предполагаю, что это как-то связано с разрешениями, но я не уверен, какие шаги предпринять. я пробовал apache:apache и другие права собственности на программу, и она имеет 755 разрешений.

Спасибо за любые указания!

Дополнительное примечание:

Извините за то, что не уточнил выше - я подтвердил, что проблема не связана с путем к программе. Я использую полный абсолютный путь. Я подтвердил, что ту же самую команду можно без проблем запустить из линии SSH (независимо от pwd). Я также создал сценарий оболочки:

#!/bin/sh
echo 'hello, world!'

Я могу вызвать этот скрипт через exec и он работает нормально. Однако, если я изменю его на

#!/bin/sh
echo 'hello, world!'
/full/path/to/wkhtmltopdf-amd64 'http://www.google.com/' /full/path/to/output.pdf

затем он терпит неудачу и возвращает код выхода 127.

Кажется, ваша оболочка не может найти двоичный файл. Попробуйте вызвать его с полным именем пути (например, /usr/bin/ls вместо того ls). Для получения дополнительной информации см. man bash

Некоторое время назад у меня была такая же проблема. В моем случае я получил 126 без установленного бита выполнения и 127 с установленным битом.

Позже я понял, что это связано с отсутствием в системе некоторых разделяемых библиотек. Даже если двоичный файл связан статически, он, похоже, использует некоторые общие библиотеки из системы.

Я действительно не помню, какие библиотеки вызывали проблему, но вот суть: https://gist.github.com/nghuuphuoc/8282411 я думаю, это хорошая отправная точка.