Я пытаюсь выполнить команду оболочки в PHP-скрипте, но exec возвращает код 126, что означает «Вызванная команда не может быть выполнена» (Проблема с правами доступа или команда не является исполняемой ). Но самое смешное, что если я запускаю тот же php-скрипт под cli, он работает хорошо. Что с этим не так?
Может быть, есть какие-то проблемы с окружающей средой? Потому что, когда я запускаю его под Apache, он возвращает код 127, если я не использую абсолютный путь к исполняемому файлу (в cli, он работает хорошо и возвращает 0, даже если я использую только имя файла ). Файл хранится в Папка /usr/local/bin.
ОБНОВЛЕНИЕ:
Как и просили в комментарии, я показываю пример своего кода, но в нем нет ничего особенного.
Эта часть отлично работает под cli, но не работает под apache($retval
будет равно 127):
$output = array();
$retval = 0;
exec( "myexecutablefile /full/path/to/someotherfile.js", $output, $retval );
echo implode( PHP_EOL, $output );
Этот фрагмент кода вернет$retval = 126
$output = array();
$retval = 0;
exec( "/usr/local/bin/myexecutablefile /full/path/to/someotherfile.js", $output, $retval );
echo implode( PHP_EOL, $output );