Я пытаюсь запустить скрипт .sh при загрузке моей главной страницы:
index.php:
<?php
shell_exec('./alert.sh');
?>
<script type='text/javascript'>
window.location = "phpshell.php";
</script>
Мой скрипт alert.sh:
#! /bin/sh
echo Login: >> log.txt
date >> log.txt
mpg123 alert.mp3
Работает, когда запускается вручную из nautilus, но при подключении через веб-сервер ничего не происходит. Я использую Ubuntu 11.10 и Apache2.
Папкой по умолчанию для веб-сервера является / var / www
Местоположение сценария оболочки важно, и путь, который Вы используете, важен. Даже если alert.sh
расположен в /var/www
, текущий рабочий каталог может отличаться. Используйте echo getcwd();
для получения текущего рабочего каталога. С полным путем Вы использовали бы:
shell_exec('/var/www/alert.sh');
вторая возможность (скорее всего), состоит в том, что режим файла (полномочия файла) недостаточен. Веб-сервер Apache работает как пользователь www-data
. Если эти alert.sh
принадлежит Вам, имеет Вашу группу и имеет, выполняют полномочия для владельца только, апачский сервер не может выполнить ее. Возможные полномочия (практикующий наименьшее количество правила полномочия):
последняя опция работает, только если Вы выполняете сценарий как shell_exec('/bin/sh alert.sh')
. Программная оболочка /bin/sh
только должна быть в состоянии прочитать сценарий, после которого выполняются данные.