shell_exec() не возвращает output

Статус
В этой теме нельзя размещать новые ответы.

moonir

Новичок
shell_exec() не возвращает output

всем привет.
для переконфигурирования squidnt пробовал использовать функции:
exec, shell_exec, system, popen

и из результата хочу узнать, переконфигурация прошла успешно или нет..

результат нулевой
(если выполнять команды dir или date/t, то все корректно),
единственно, system во второй параметр пишет запустилась ли вообще команда или нет...
но если переконфигурирование происходит некорректно, то апач пишет в еррор лог весь аутпут.

теперь вопрос, могу ли я получить ошибку апача и обработать ее, если нет то придется смотреть на дату последнего изменения error.log апача.

и еще вопрос, для переконфигурирования squidnt
squid -n SquidNT -f C:\\squid\\etc\\squid.conf -k reconfigure
какую функцию корректнее использовать из выше перечисленных....
 

tony2001

TeaM PHPClub
очень много текста, но нет самой необходимой информации.

>результат нулевой
var_dump(shell_exec(..));

"нулевой результат" - это что-то вроде "не работает", никакой смысловой нагрузки не несет.
 

moonir

Новичок
это означает, что нижний код

PHP:
echo "<PRE>";

$output = exec($cmd, $q)."\r\n";
while(list(,$row)=each($q)){$output = $output.$row."\r\n";}
echo $output."\r\n";
echo "-----exec-------\r\n";

echo system($cmd, $res)."\r\n";
echo $res."\r\n";
echo "-----system-------\r\n";

echo shell_exec($cmd)."\r\n";
echo "-----shell_exec-------\r\n";

$handle = popen($cmd, "r");
$output = fread($handle, 100);
echo $output."\r\n";
pclose($handle);
echo "-----popen-------\r\n";

echo "</PRE>";
возвращает
-----exec-------

0
-----system-------

-----shell_exec-------


-----popen-------
где 0 означает, что команда запустилась корректно
саму команду писал в первом посте

-~{}~ 20.04.07 14:46:

уважаемые гуру, если можно, укажите пожалуйста, все таки какая функция больше подходит к перезапуску squid-а
(то что они все это могут делать, эт уже проверено)

в дальнейшем, к сожалению, я не вижу между ними различий...
 

tony2001

TeaM PHPClub
еще раз:
var_dump()

ну и главный вопрос - кто сказал, что пользователю апача можно перегружать сквид?
 

moonir

Новичок
у exec string(0) ""

у system null

мой пользователь апач, может перегружать squid (лог из кеша сквида, при выполнении этих функций на php)
2007/04/20 16:27:38| Reconfiguring Squid Cache (version 2.6.STABLE10)...
2007/04/20 16:27:38| FD 11 Closing HTTP connection
2007/04/20 16:27:38| FD 13 Closing ICP connection
2007/04/20 16:27:38| FD 14 Closing HTCP socket
2007/04/20 16:27:38| FD 15 Closing SNMP socket
2007/04/20 16:27:38| Cache dir 'c:/squid/var/cache' size remains unchanged at 512000 KB
2007/04/20 16:27:38| Logformat for 'squid' is ' %tl %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt %ue %ul %ui %ue'
2007/04/20 16:27:38| accessLogParseLogFormat: got definition ' %tl %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt %ue %ul %ui %ue'
2007/04/20 16:27:38| User-Agent logging is disabled.
2007/04/20 16:27:38| Referer logging is disabled.
2007/04/20 16:27:38| DNS Socket created at 0.0.0.0, port 2950, FD 10
2007/04/20 16:27:38| Adding DHCP nameserver 0.0.0.0 from Registry
2007/04/20 16:27:38| Adding DHCP nameserver 0.0.0.0 from Registry
2007/04/20 16:27:38| Adding domain povolzhiese.local from Registry
2007/04/20 16:27:38| Adding domain mrkc.povolzhiese.local from Registry
2007/04/20 16:27:38| Adding domain foris.povolzhiese.local from Registry
2007/04/20 16:27:38| Accepting proxy HTTP connections at 0.0.0.0, port 3128, FD 11.
2007/04/20 16:27:38| Accepting ICP messages at 0.0.0.0, port 3130, FD 13.
2007/04/20 16:27:38| Accepting HTCP messages on port 4827, FD 14.
2007/04/20 16:27:38| Accepting SNMP messages on port 3401, FD 15.
2007/04/20 16:27:38| Configuring Parent proxy.local/3128/0
2007/04/20 16:27:38| Loaded Icons.
2007/04/20 16:27:38| Ready to serve requests.
запуск команды в виндовозном cmd возвращает

Status of SquidNT Service:
Service Type: 0x10
Current State: 0x4
Controls Accepted: 0x5
Exit Code: 0
Service Specific Exit Code: 0
Check Point: 0
Wait Hint: 0
в случае некорректного конфига, в error.log на веб сервере появляется следующее (в cmd тоже самое):

2007/04/20 11:22:29| parseConfigFile: line 97 unrecognized: 'acql all src 0.0.0.0/0.0.0.0'
2007/04/20 11:22:29| ACL name 'all' not defined!
FATAL: Bungled C:\squid\etc\squid.conf line 123: follow_x_forwarded_for allow all
Squid Cache (Version 2.6.STABLE10): Terminated abnormally.
-~{}~ 20.04.07 16:04:

ладно, закрывайте тему
надо на самом деле запретить запуск, каких-либо программ, вне расшаренных директорий

тогда нарисую exe-шник, который перезагружает squid
и возвращает результат перезапуска, положу его в расшаренную директорию и буду его вызывать из php...

но для заинтересованных лиц, имейте ввиду, что output выходит не для всех команд....
 

Alexandre

PHPПенсионер
но для заинтересованных лиц, имейте ввиду, что output выходит не для всех команд....
команды "не разрешенные" правами и осью просто не отрабатываются и все!!!

у меня и system и popen всегда отрабытывали!!!
 

moonir

Новичок
да.... зря я много букв копипастил...

все!!! команды отрабатываются (логи прокси в верхнем посте, логи вебсервера при некорректном конфиге там же)

1) если в $cmd поставлю "dir" или "date /t"
то я на странице увижу тоже самое, что и в командной строке
2) если в $cmd поставлю строку процитированную в первом посте, то пусто, как бы это малоинформативно бы не звучало...

спасибо всем, с этим раскланиваюсь, Мунир.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху