Необходимо вызвать .sh при загрузке веб-страницы php

Я пытаюсь запустить скрипт .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

1
задан 23 January 2012 в 00:35

1 ответ

Местоположение сценария оболочки важно, и путь, который Вы используете, важен. Даже если alert.sh расположен в /var/www, текущий рабочий каталог может отличаться. Используйте echo getcwd(); для получения текущего рабочего каталога. С полным путем Вы использовали бы:

shell_exec('/var/www/alert.sh');

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

  • 755 - владелец: Вы - группа: Вы
  • 750 - владелец: Вы - группа: www-данные
  • 644 или 640 - владелец: Вы - группа: Вы или www-данные

последняя опция работает, только если Вы выполняете сценарий как shell_exec('/bin/sh alert.sh'). Программная оболочка /bin/sh только должна быть в состоянии прочитать сценарий, после которого выполняются данные.

1
ответ дан 23 January 2012 в 00:35

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

Похожие вопросы: