我正在编写一个PHP脚本,用Linux shell命令ping判断网络连接,用PHP的exec()调用它:

<?php


// Bad IP domain for testing.
$domain_bad = "lksjdflksjdf.com";

$ip_address = $domain_bad;

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

var_dump($return_var);
echo "return_var is: $return_var" . "\n";
var_dump($output);


exit;
?>

我没有从ping in $output中获得错误消息的输出,这正是我所期望的:

$ php try.php
ping: unknown host lksjdflksjdf.com
int(2)
return_var is: 2
array(0) {
}

如果域名是一个好域名,比如雅虎.com,则$output在数组中具有ping的输出.但如果是'ping: unknown host lksjdflksjdf.com'这样的错误,它不会返回到$outputarray.

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

推荐答案

您应该将stderr重定向到stdout.

为此,更改exec()调用如下:

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

更多关于2>&1意味着here的信息.

Php相关问答推荐

419注册期间Laravel 11中的错误

composer如何解析包名?

自定义通知在Woocommerce我的帐户自定义端点页面上不起作用

以编程方式更新现有Yith WooCommerce Booking的状态

Msgraph-sdk-php v2如何从返回对象中获取数据?

WooCommerce基于元数据的自定义范围目录排序

PHP日期操作,将多个日期输出为格式化字符串

在 WooCommerce 中应用优惠券时显示购物车商品折扣金额

从 XAMPP 运行 shell 脚本时,意外标记(附近出现语法错误

PHP访问子数组列表出错结果和长度

Google Drive API 服务->文件->get('root') 失败并显示找不到文件. (范围问题?)

根据页面的最后修订日期设置 MediaWiki 内部链接的样式

PHP 中的curl -F request=@file.xml

根据购买产品的自定义字段替换WooCommerce添加到购物车按钮

设置GA4 PHP API的setSubject以允许访问所有管理员账户属性

Laravel使用另一张表进行关联查询

带有 nginx 的 Symfony 不提供 .js 和 .css 文件

计算组合指数

在 EasyAdmin 中添加全局操作,将我的按钮放在表格下方而不是上方

Laravel - 关联与设置观察者事件的 ID