Использование 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 я думаю, это хорошая отправная точка.