Вызов 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 - хорошая отправная точка.

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