Страница 1 из 1
Ребут апача php скриптом
Добавлено: 2010-07-18 22:13:02
Ly
Код: Выделить всё
<?
system("/usr/local/bin/sudo -b /usr/local/etc/rc.d/apache restart");
?>
- апач просто останавливается
Код: Выделить всё
<?
system("/usr/local/bin/sudo -b sh apacherestart.sh");
?>
- ребутает апач ( в
apacherestart.sh строка
/usr/local/etc/rc.d/apache restart )
Код: Выделить всё
<?
if (isset($_POST['add_domain']))
{
system("/usr/local/bin/sudo -b sh apacherestart.sh");
}
?>
- апач просто останавливается...
вопрос: почему?
P.S. Это результаты запуска через браузер, через консолько все варианты работают.
Re: Ребут апача php скриптом
Добавлено: 2010-07-18 22:55:49
thefree
а как вы думаете от какого пользователя исполняется cgi?
p.s. еще бы не stderror выводить в фаил
Re: Ребут апача php скриптом
Добавлено: 2010-07-18 23:06:53
Ly
thefree писал(а):а как вы думаете от какого пользователя исполняется cgi?
p.s. еще бы не stderror выводить в фаил
Я бы понял, если бы делал stop а потом старт, а так что-то не врубаюсь.
"P.S." не совсем понял. Все кроме ошибок выводить в файл?
Re: Ребут апача php скриптом
Добавлено: 2010-07-19 5:26:14
ADRE
хмм... ssh?
Re: Ребут апача php скриптом
Добавлено: 2010-07-19 9:05:40
thefree
Код: Выделить всё
system("/usr/local/bin/sudo -b sh apacherestart.sh > out.log");
И посмотрите и за чего не поднимается апач.
Re: Ребут апача php скриптом
Добавлено: 2010-07-19 9:15:40
Ly
thefree писал(а):Код: Выделить всё
system("/usr/local/bin/sudo -b sh apacherestart.sh > out.log");
И посмотрите и за чего не поднимается апач.
Stopping apache.
В httpd-error.log:
Re: Ребут апача php скриптом
Добавлено: 2010-07-19 11:53:20
ProFTP
попробовать:
Код: Выделить всё
system("/usr/local/bin/sudo -b sh /usr/local/etc/rc.d/apache22 restart");
Re: Ребут апача php скриптом
Добавлено: 2010-07-19 12:04:25
ProFTP
фигня скорее всего в том что скрипт /usr/local/etc/rc.d/apache не может перегрузить демона
этот скрипт может /usr/local/etc/rc.d/apache22 он ждет пока демон вырубиться вообще, а потом перезапускае...
т.е. скрипт демона вырубил, начинает запускать, а запустить не может потому что он еще не вырубился, может порт 80 еще занят, и по этому вываливается
Re: Ребут апача php скриптом
Добавлено: 2010-07-19 12:14:34
Ly
Он должен был бы при этом в лог ругаться
Re: Ребут апача php скриптом
Добавлено: 2010-07-19 13:55:31
ProFTP
попробуй форкнуть
Код: Выделить всё
system("/usr/local/bin/sudo -b /usr/local/etc/rc.d/apache restart &");
в книге был пример скрипта для управлениея демоном, перезагрузка его, скрипт был на perl
Re: Ребут апача php скриптом
Добавлено: 2010-07-19 17:16:47
ADRE
для того, чтобы корректно рестартануть надо чтоб время выполнения скрипта было больше времени рестарта, т.к. оно рестартит всяко долго суйте & в конец строки перезапуска иначе вебморда и будет дальше висеть и отваливаться по таймауту.
Re: Ребут апача php скриптом
Добавлено: 2010-07-19 17:38:58
Ly
ProFTP писал(а):попробуй форкнуть
Код: Выделить всё
system("/usr/local/bin/sudo -b /usr/local/etc/rc.d/apache restart &");
в книге был пример скрипта для управлениея демоном, перезагрузка его, скрипт был на perl
Код: Выделить всё
<?
system("/usr/local/bin/sudo -b /usr/local/etc/rc.d/apache restart &");
?>
Падает.
Re: Ребут апача php скриптом
Добавлено: 2010-07-19 18:09:17
thefree
ересть какая то тут создается
1. засунь выполнение команды system в переменую
2. попробуй сделать рестарт через httpdctl
3. посмотри что у тебя в переменой
Re: Ребут апача php скриптом
Добавлено: 2010-07-19 19:05:35
ViktorichZ
форкнуться надо для я этого
типа
Код: Выделить всё
/usr/bin/nohup /usr/local/bin/sudo -b sh apacherestart.sh &
Re: Ребут апача php скриптом
Добавлено: 2010-07-20 9:23:42
thefree
вы почитайте про system, перед тем как писать надо форкатся или нет ...
И вообще выполните этот скрипт в консоли и посмотрите что получится.
Re: Ребут апача php скриптом
Добавлено: 2010-07-20 9:32:10
thefree
Код: Выделить всё
/root>php apache.php
Performing sanity check on apache configuration:
Syntax OK
Stopping apache.
Waiting for PIDS: 4314.
Starting apache.
Launching... /usr/local/sbin/gcache
pid=4668
Launching... /usr/local/sbin/gcache
pid=4668
/root>cat apache.php
<?php
system("/usr/local/etc/rc.d/apache restart");
?>
/root>ps auxwww | grep htt
www 4671 1,3 2,1 18968 10724 ?? S 10:30 0:00,00 /usr/local/sbin/httpsd
www 4672 1,3 2,1 18968 10724 ?? S 10:30 0:00,00 /usr/local/sbin/httpsd
www 4673 1,3 2,1 18968 10724 ?? S 10:30 0:00,00 /usr/local/sbin/httpsd
www 4674 1,3 2,1 18968 10724 ?? S 10:30 0:00,00 /usr/local/sbin/httpsd
www 4675 1,3 2,1 18968 10724 ?? S 10:30 0:00,00 /usr/local/sbin/httpsd
root 4669 0,8 2,1 18968 10704 ?? Ss 10:30 0:00,11 /usr/local/sbin/httpsd
/root>
Где проблема?
проверти от какого пользователя у Вас Cgi и настройки sudo
Re: Ребут апача php скриптом
Добавлено: 2010-07-20 10:48:57
Ly
Код: Выделить всё
system("touch /test/testfile.www");
system("/usr/local/bin/sudo -b touch /test/testfile.sudo");
Код: Выделить всё
-rw-r--r-- 1 root wheel 0 Jul 20 07:41 testfile.sudo
-rw-r--r-- 1 www wheel 0 Jul 20 07:41 testfile.www
Повторюсь, через консоль все работает.
Re: Ребут апача php скриптом
Добавлено: 2010-07-20 19:43:01
zg
Ly писал(а):Повторюсь, через консоль все работает.

ну ну
Ly писал(а):вопрос: почему?
интересно что думает апач, когда его собственный модуль вдруг его же и останавливает? Думаю, как настоящий идеец, он конечно же остановится и по традиции потянет ВСЕ свои открытые процессы за собой. Когда все процессы умерли, кто запустит апач? Правильно, кто угодно, только не сам апач.
Чем не устраивает graceful?
Re: Ребут апача php скриптом
Добавлено: 2010-07-20 21:54:19
thefree
zg писал(а):Ly писал(а):Повторюсь, через консоль все работает.

ну ну
Ly писал(а):вопрос: почему?
интересно что думает апач, когда его собственный модуль вдруг его же и останавливает? Думаю, как настоящий идеец, он конечно же остановится и по традиции потянет ВСЕ свои открытые процессы за собой. Когда все процессы умерли, кто запустит апач? Правильно, кто угодно, только не сам апач.
Чем не устраивает graceful?
спорный вопрос ... т.к. perl'ом я гружу апач ... с веба
Re: Ребут апача php скриптом
Добавлено: 2010-07-21 5:44:55
zg
thefree писал(а):т.к. perl'ом я гружу апач ... с веба
перл работает как mod_perl или как CGI? Если модулем, то это апач не будет запускаться, если как CGI, то вероятность есть.
Re: Ребут апача php скриптом
Добавлено: 2010-07-21 8:04:27
thefree
zg писал(а):thefree писал(а):т.к. perl'ом я гружу апач ... с веба
перл работает как mod_perl или как CGI? Если модулем, то это апач не будет запускаться, если как CGI, то вероятность есть.
cgi, но и пых моно как cgi
Re: Ребут апача php скриптом
Добавлено: 2010-07-21 10:46:11
Ly
Вопрос решил костылем, cgi юзать не хочется...
Re: Ребут апача php скриптом
Добавлено: 2010-07-21 11:36:05
thefree
Ly писал(а):Вопрос решил костылем, cgi юзать не хочется...
а что мешает один скрипт запустить как cgi?
и какой костыль?