Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:为什么不是';t exec()是否返回输出?_Php_Exec_Ping - Fatal编程技术网

PHP:为什么不是';t exec()是否返回输出?

PHP:为什么不是';t exec()是否返回输出?,php,exec,ping,Php,Exec,Ping,我正在编写一个PHP脚本,用于使用Linux shell命令检查网络连接ping使用PHP的exec(): 如果域是一个好的域,例如yahoo.com,那么$output在数组中具有ping的输出。但是如果它是一个错误,例如'ping:unknown host lksjdflksjdf.com',它不会返回到$output数组 为什么会发生这种情况?有没有更好的方法 您应该将stderr重定向到stdout 为此,请按如下方式更改exec()调用: exec("ping -c 1 $domain

我正在编写一个PHP脚本,用于使用Linux shell命令检查网络连接
ping
使用PHP的
exec()

如果域是一个好的域,例如yahoo.com,那么
$output
在数组中具有ping的输出。但是如果它是一个错误,例如
'ping:unknown host lksjdflksjdf.com'
,它不会返回到
$output
数组


为什么会发生这种情况?有没有更好的方法

您应该将stderr重定向到stdout

为此,请按如下方式更改exec()调用:

exec("ping -c 1 $domain_bad 2>&1", $output, $return_var);

有关
2>&1
含义的详细信息。

如果上述答案无法解决您的问题,则可能禁用了
exec()
。您可以尝试在
disable_functions
行检查
php.ini
文件。

add2>&1但输出仍然是数组空的,如果从cmd执行,它将输出2个值良好的提示。应该是
禁用功能
而不是
禁用功能
$ php try.php
ping: unknown host lksjdflksjdf.com
int(2)
return_var is: 2
array(0) {
}
exec("ping -c 1 $domain_bad 2>&1", $output, $return_var);