当前位置: 首页 > 面试题库 >

PHP:为什么exec()不返回输出?

苏晓博
2023-03-14
问题内容

我正在编写一个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获得错误消息的输出,$output这是我期望的:

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

如果该域是一个很好的域,例如yahoo.com,则将$outputping中的输出输出到数组中。但是,如果这是一个错误,例如'ping: unknown host lksjdflksjdf.com'它不会返回到$output数组。

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


问题答案:

您应该将stderr重定向到stdout。

为此,请像这样更改exec()调用:

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


 类似资料:
  • 我正在尝试使用PHP从CallRail获取数据。通过JSON的com API。 但是,当直接在浏览器中预览PHP文件时,我遇到了这个错误: 我的代码: 到目前为止,我已经: 阅读几篇与错误相关的文章,但没有找到解决方案或可验证的准确解释。 我已经手动重新输入了所有代码,以确保我没有任何编码不当的字符或无效的空格。 我也试图找到PHP文档中的官方留档,但没有找到任何有用的东西。 我在一个空白的PHP

  • 问题内容: 我正在通过以下方式从Java代码启动Windows进程(用C ++编写,但没有源代码): 我的问题是,waitFor()方法永远不会结束。因此,我尝试在一个简单的shell中启动该过程,并以shell中的许多打印正确结束(我猜是标准输出)。 因此,即使我现在不需要这些输出,我还是决定创建并启动一个读取标准输出的线程。这解决了问题。 因此,我的问题是以下问题:该解决方案是“启动并等待具有

  • 我在客户端使用vue、vue路由器,在服务器端使用express、morgan(MEVN应用程序) 在客户端我用vue cookie设置cookie 在服务器端,我使用CookieParser 所以,在应用程序。我有这样的代码 并且,在文件中,我有这样一个GET请求的代码 问题是,var loginHash=req.cookies['Login'];总是返回未定义的,即使我有登录cookie 添加

  • 当我试图对泛型类型执行TypedQuery时,我会从Eclipse得到一个未检查的类型转换警告。 我在这里使用泛型,因为在数据集中,由于查询和编辑的时间限制,每年都必须分离到不同的表中。表中有118年的数据(自1900年以来),我希望构建一个可以使用Java Reflections API每年扩展自己的系统。但是,这意味着在编译之前,我的父类不知道它们将对哪个子类或表进行操作。 下面是一些代码的示

  • 根据JSON规范,表示null值的正确方法是文字。 预期结果: 实际结果:

  • 问题内容: 我运行了跟随脚本(java),它给了我奇怪的结果。有人可以帮忙解释吗? 记录结果(彼此不同): - - 背景 - - 我想将自己的keyGenrator用于@Cacheable批注(Spring和ehCache)。 在这种情况下,我发现缓存总是丢失的。 然后,我必须更改为: 谢谢 问题答案: 这是因为for 不会被覆盖。即使条目相同,也没有理由为什么的两个实例应该具有相同的值。 试试这