Как запустить bash-файл из php

HEPB

Постоялец
Регистрация
24 Июн 2009
Сообщения
111
Реакции
8
Подскажите, плиз, где собака порылась.
Есть VDS-сервер на ОС debian 5 minimal

В папке /etc/init.d/tr (файл на языке bash) права 755 даны.

Есть на php - функция:

PHP:
    public static function control($action)
    {
       
        $handle = popen("sudo " . ConstTrans::TRANS_INITSCRIPT . " " . $action, 'r');
        while (!feof($handle)) {
            $reply .= fgets($handle, 4096);
        }
        return $reply;
    }
в константе ConstTrans::TRANS_INITSCRIPT содержится путь к файлу /etc/init.d/tr
Функция вызывается по кнопке из админки файла. Так вот, почему то не работает. Каких то прав не хватает или еще чего то. Подскажите, в чем проблема может быть!
 
1. popen может быть в disabled functions
2. sudo может быть или запрещен для юзера, от имени которого запускается скрипт, или может требовать ввод пароля.
 
  • Нравится
Реакции: HEPB
В /etc/sudoers ты должен разрешить Apache запускать твой скрипт без запроса пароля. Добавь в конец /etc/sudoers:
Код:
apache_username ALL=NOPASSWD: /etc/init.d/tr
и замени apache_username на имя пользователя, из-под которого у тебя запускается Apache.
 
  • Нравится
Реакции: HEPB
у меня операционка дебиан. может поэтому?
/etc/sudoers нет такого файла у меня.
 
Подключись к vds-ке через ssh как root, выполни команду visudo и редактируй этот файл. И ты точно знаешь, из-под какого пользователя у тебя запускается Apache? Если нет, то из под рута выполни команду ps aux | grep apache и выложи вывод сюда.​
 
кстати, а как узнать, из-под кого запускается Апач? Вообще у меня только root - пользователь. других не делал
<-------------- добавлено через 56 сек. -------------->
root@sst:~# visudo
-bash: visudo: command not found
 
Апач стартует автоматом при рестарте сервака, он прописан в etc/init.d
<-------------- добавлено через 57 сек. -------------->
www-data 8044 0.0 1.4 26484 7680 ? S 07:23 0:00 /usr/sbin/apach e2 -k start
www-data 8046 0.0 1.3 26392 7040 ? S 07:23 0:00 /usr/sbin/apach e2 -k start
www-data 8066 0.0 1.4 26688 7748 ? S 07:24 0:00 /usr/sbin/apach e2 -k start
www-data 8095 0.0 1.5 27424 7948 ? S 07:25 0:00 /usr/sbin/apach e2 -k start
root 8613 0.0 0.3 25196 2056 ? Ss Feb26 0:29 /usr/sbin/apach e2 -k start
www-data 9434 0.0 1.4 26840 7436 ? S 08:41 0:00 /usr/sbin/apach e2 -k start
www-data 9596 0.0 1.3 26680 7212 ? S 08:45 0:00 /usr/sbin/apach e2 -k start
www-data 9598 0.0 0.6 25716 3328 ? S 08:45 0:00 /usr/sbin/apach e2 -k start
www-data 9695 0.0 1.3 26688 7028 ? S 08:51 0:00 /usr/sbin/apach e2 -k start
www-data 9748 0.0 1.2 26416 6600 ? S 08:54 0:00 /usr/sbin/apach e2 -k start
www-data 9807 0.0 1.4 27244 7640 ? S 08:57 0:00 /usr/sbin/apach e2 -k start
root 9889 0.0 0.0 1720 516 pts/0 S+ 09:01 0:00 grep apache
 
visudo - неизвестная команда
 
Очень странно, как так нету /etc/sudoers и visudo. Попробуй:
Код:
touch /etc/sudoers
nano /etc/sudoers
Вставь туда:
Код:
www-data ALL=NOPASSWD:/etc/init.d/tr
Сохрани файл сочетанием Ctrl-O. Выход Ctrl-X

offtop: не добавляй новые сообщения, редактируй последнее.
 
файл создать то могу и без редактора nano...

Посмотрел сейчас лог апача. и вот что увидел:
sh: sudo: command not found
то есть нет такой команды sudo!
это команда убунту, в debian ее нет? или надо какой-то пакет установить?

ну вроде понял теперь. надо убрать вначале sudo и все по крайней мере файл запускается. дальше копать дальше буду...
 
Назад
Сверху