Сценарий Bash запускается из командной строки php, но не со страницы

У меня есть сценарий bash, который работает должным образом как из оболочки, так и из командной строки PHP, но не при вызове со страницы PHP в Apache (Raspbian). То есть это работает (командная строка PHP):

>php exec('/var/www/html/scripts/myBashScript.sh');

Но это не так (index.php):

<?php
exec('/var/www/html/scripts/myBashScript.sh');
?>

Сообщения об ошибках не отображаются, и я не вижу ничего значимого в журналах сервера Apache. Как было предложено другими ответами, я также пробовал:

  • exec ('sh /var/www/html/scripts/myBashScript.sh')
  • exec ('./ scripts / myBashScript.sh')
  • exec ('ш ./scripts/myBashScript.sh')

И файл сценария, и содержащая его папка имеют разрешения rwx для пользователя Apache (www-data). Сценарий установлен как исполняемый. Встроенные команды bash работают так, как ожидалось от файла php, т.е. это работает:

<?php
echo exec('whoami');
?>

Что мне не хватает?


person LambethWalk    schedule 09.04.2016    source источник
comment
Как узнать, что он не работает? Используйте $output и $return_var аргументы и var_dump то, что они содержат. Также, если это сценарий bash, попытка запустить его с sh вместо bash кажется глупой.   -  person Alexander O'Mara    schedule 09.04.2016
comment
@FuzzyTree: -rwxrwxrwx 1 www-data www-data 396 9 апр, 11:02 скрипты / myBashScript.sh   -  person LambethWalk    schedule 09.04.2016
comment
@Alexander, сценарий запускает веб-браузер, поэтому я знаю, что этого не происходит. Других выходных данных он не генерирует.   -  person LambethWalk    schedule 09.04.2016
comment
Сделайте что-нибудь более простое, чтобы начать отладку, например, простое эхо или запись файла.   -  person Alexander O'Mara    schedule 09.04.2016
comment
@ AlexanderO'Mara Та же проблема с файлом сценария, содержащим только эхо.   -  person LambethWalk    schedule 09.04.2016
comment
Вы использовали аргументы $output и $return_var и var_dump их? Что они содержат? По крайней мере, тот должен дать вам код выхода.   -  person Alexander O'Mara    schedule 09.04.2016
comment
@ AlexanderO'Mara, вы правы: var_dump возвращает эхо-строку для $ output и int (0) для $ return_var, поэтому скрипт выполняется. Но он выполняет только встроенные команды Bash.   -  person LambethWalk    schedule 09.04.2016
comment
Что ж, сценарий действительно выполняется, поэтому, возможно, попробуйте переписать вопрос, чтобы указать, что именно не работает в сценарии.   -  person Alexander O'Mara    schedule 09.04.2016


Ответы (1)


Оказалось, что проблема связана не с самим сценарием, а с командами в сценариях, отличными от Bash. См. Комментарии выше. Спасибо @ AlexanderO'Mara.

person LambethWalk    schedule 09.04.2016