echo exec работает, а exec нет

Я использую корпоративную версию Red Hat и пытаюсь создать простую php-страницу.

Когда я пытаюсь с...

 // html code
 <?php
 echo exec(<cmd>); 
 ?>
// rest html code

Работает нормально

но при попытке с...

 // html code     
 <?php
 exec(<cmd>);
 ?>
 // rest html code

Это не работает

даже простая команда, такая как cat, ls и т. Д., Не работает, а также я попробовал 2 > &1, тогда ошибка не печатается.

В чем может быть возможная ошибка???


person Udit Gupta    schedule 20.10.2011    source источник
comment
Что значит не работает? Вы имеете в виду, что вы не получаете вывода без echo? Вы не должны, так как exec ничего не запишет в стандартный вывод.   -  person meagar    schedule 20.10.2011
comment
команда, которую я пытаюсь использовать, фактически отправляет пакет на другой n/w   -  person Udit Gupta    schedule 20.10.2011
comment
если я использую переключатель -v, то он тоже ничего не напишет?   -  person Udit Gupta    schedule 20.10.2011
comment
О каком переключателе идет речь? exec — это функция в PHP, она не поддерживает переключатели.   -  person meagar    schedule 20.10.2011
comment
-v означает verbose для командной строки, и команда используется для отправки пакета по сети, поэтому я подумал, что exec должен работать, потому что я не хочу, чтобы его ответ был на той же машине.   -  person Udit Gupta    schedule 25.10.2011


Ответы (2)


Документы:

вернуть ответ от команды, вам также нужно будет распечатать ответ

Пример:

<?php
$response = array()
exec('whoami', $response);
print_r($response,true);
?>
person Phill Pafford    schedule 20.10.2011
comment
принял ваш ответ, потому что он больше соответствует заголовку и может направить кого-то в правильном направлении. Хотя я также добавил свой ответ, если кому-то будет интересно, в чем была настоящая проблема со мной.. - person Udit Gupta; 30.11.2011

оккккккк........ Я решил проблему. На самом деле проблем было две...

  1. Пользователь apache по умолчанию ищет свою команду в папке /usr/bin, а команда, которую я пытался использовать, находилась в папке /usr/local/bin. Поэтому мне нужно создать программную ссылку этой команды в каталоге /usr/bin.

  2. Во-вторых, apache является менее привилегированным пользователем, чем root, поэтому необходимо выполнить команду sticky bit, чтобы apache мог успешно выполнить команду.

Я надеюсь, что это поможет кому-то еще, кто столкнется с той же проблемой в будущем.

person Udit Gupta    schedule 29.11.2011