sudo_exec什么都不返回

时间:2015-11-11 07:55:16

标签: php linux ping shell-exec

我尝试使用www.google.de ping 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

1 个答案:

答案 0 :(得分:2)

2>&1添加到您的命令中,以确保您没有收到shell_exec会过滤掉的错误消息:

$command        = $ping . $url . ' 2>&1';
如果出现错误,

shell_exec将返回NULL。通过该修改,您可以将任何错误消息重定向到正常输出,从而强制shell_exec显示您通常在控制台会话中获得的每条消息。