PHP:为什么不是';t exec()是否返回输出?
我正在编写一个PHP脚本,用于使用Linux shell命令检查网络连接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
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);