【问题标题】:PHP function fsockopen never returning falsePHP 函数 fsockopen 永远不会返回 false
【发布时间】:2012-07-17 10:39:25
【问题描述】:

有人可以帮我使用 php 函数 fsockopen 吗?

如果我这样调用函数:

$fp = fsockopen('xywqnda.com', 80, $errno, $errstr, 10);

如果主机域不可用,它永远不会返回 false,我不明白为什么!

【问题讨论】:

  • 奇怪,当我运行该代码时,我得到的 $fp 等于 bool(false)
  • 这是我的代码:
  • 请更新你原来的问题,这样更易​​读。

标签: php fsockopen


【解决方案1】:

啊,您正在使用 UDP。您的原始示例没有显示这一点。这改变了事情。来自 PHP 手册:

警告

即使远程主机无法访问,UDP 套接字有时也会看似已打开且没有错误。错误只会 当您从套接字读取或写入数据时变得明显。这 这是因为 UDP 是一种“无连接”协议,它 意味着操作系统不会尝试为 直到它真正需要发送或接收数据。

【讨论】:

    【解决方案2】:

    试试这个

    ini_set("display_errors","on")
    

    如果域无效,它会显示一个警告,除了该函数将返回TRUE,因为返回文件指针,意味着文件创建成功,只有当它无法创建文件时才会返回FALSE .

    【讨论】:

    • 我已经尝试过这样的事情,它是 error_reporting(E_ERROR),并且两者都不起作用...谢谢您的回答
    【解决方案3】:
    // displays all warnings, notices and errors
    ini_set('display_errors', 1); 
    error_reporting(E_ALL);
    
    $fp = fsockopen('xywqnda.com', 80, $errno, $errstr, 10);
    

    连接尝试将在 10 秒后超时。
    由于域不可用,您将收到警告。
    $errno 和 $errstr 将包含系统错误号和错误消息。
    该函数将返回 false,因此 $fp 将等于 false。

    文档:fsockopen

    【讨论】:

    • 这是我的代码:
    猜你喜欢
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2012-08-12
    • 1970-01-01
    • 2021-11-10
    • 2019-11-15
    相关资源
    最近更新 更多