Вызов 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.
2 ответа
Кажется, ваша оболочка не может найти двоичный файл. Попробуйте вызвать его с полным именем пути (например, /usr/bin/ls
вместо ls
). Для получения дополнительной информации см. man bash
У меня была такая же проблема некоторое время назад. В моем случае я получил 126 без установленного бита выполнения и 127 с установленным битом.
Позже я понял, что это связано с некоторыми общими библиотеками, отсутствующими в системе. Даже если двоичный файл связан статически, он использует некоторые общие библиотеки из системы.
Я действительно не помню, какие библиотеки были причиной проблемы, но я думаю, что это https://gist.github.com/nghuuphuoc/8282411 - хорошая отправная точка.