понедельник, 13 января 2014 г.


Запуск скриптов в Linux через WEB интерфейс.

При настройках по умолчанию сервера APACHE и PHP, модуль php не может запустить скрипт в Linux по вызову shell_exec(" <команда запуска скрипта> ").

Если <команда запуска скрипта> в рутовой консоли Linux выполняется без проблем, но не выполняется через web-интерфейс, можно разрешить выполнять скрипт другим пользователям системы Linux. Сделать это можно путем редактирования файла /etc/sudoers. Данный файл рекомендуется редактировать с помощью специальной программы visudo.

1. Запускаем
#visudo

2. Ищем строчку
root ALL=(ALL) ALL

3. Переходим в режим вставки, нажав клавишу "i". Внизу появится информирование о том, что мы перешли в режим вставки данных - -- INSERT --:


4. Дописываем следующую строчку после найденной строки:
ALL ALL=(root) NOPASSWD:<команда запуска скрипта>

5. Нажимаем клавишу "Esc", тем самым перейдя в обычный режим просмотра

6. Сохраняемся, набрав комбинацию ":w"

7. Выходим, введя комбинацию":q"

8. Теперь при вызове страницы с командой php скрипт должен выполниться
<?php
$x=shell_exec("<команда запуска скрипта> ");
echo $x;
?>


Примечание: У меня скрипт содержал команду создания графиков rrdtool и никак не хотел выполняться. Заработало только после добавления разрешения запуска rrdtool в файл /etc/sudoers:
ALL ALL=(root) NOPASSWD:/usr/bin/rrdtool