sudo_exec ничего не возвращает

Я пытаюсь пинговать www.google.de с shell_exec и сохранить результат в переменную, но я не получаю результат от shell_exec,

<?php
$ping           = 'sudo ping -c 4 ';
$url            = 'www.google.de';

$command        = $ping . $url;

$ping_result    = shell_exec($command);

$datei          = fopen("/var/www/myProject/result_ping","w") or die ("Could not open file!");
sleep(10);

if ($datei == false)
{
$ping_result = "Cannot open file!";
}
else
{
fwrite ($datei , $ping_result);
fclose ($datei);
}

echo $command;      //Output:       sudo ping -c 4 www.google.de
echo $ping_result;  //Output:       nothing
?>

Файл result_ping имеет все права (chmod 777).
Возможно, веб-серверу не разрешено выполнять ping?

0

Решение

добавлять 2>&1 в вашу команду, чтобы убедиться, что вы не получаете сообщение об ошибке, что shell_exec отфильтровывает:

$command        = $ping . $url . ' 2>&1';

shell_exec вернет NULL в случае ошибки. С этой модификацией вы перенаправляете любое сообщение об ошибке в обычный вывод, таким образом заставляя shell_exec показывать каждое сообщение, которое вы обычно получаете в сеансе консоли.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]