PHP - 获取有关失败的stream_socket_accept()请求的更多信息

时间:2016-04-21 21:07:05

标签: php ssl error-handling stream-socket-client

我有一个使用stream_socket_server()和stream_socket_accept()运行的PHP通信服务器,这是一个相当复杂的事情,它使用SSL连接和证书来确定远程端是否有权连接到服务器。我的日志中出现的一件事是失败的连接。我正在尝试提供有关这些连接的更多详细信息以用于安全目的。

我目前通过为stream_socket_accept()调用设置错误处理程序来获取失败连接的大部分错误详细信息:

public function on_ssa_error($errno, $errstr)
    {
    $this->ssa_error .= " ERROR [$errno]: $errstr\n";
    }

public function on_select_read()
    {
    $this->ssa_error = "";
    set_error_handler(array($this, "on_ssa_error")); 
    $rsocket = stream_socket_accept($this->ss, 0);
    restore_error_handler();

    if ($rsocket !== FALSE)
        // Finish setting up the socket connection and start using it
    else
        // Report the error in $this->ssa_error
    }

...当我连接失败时,我倾向于得到这样的错误:

ERROR [2]: stream_socket_accept(): SSL operation failed with code 1. OpenSSL Error messages: error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate
ERROR [2]: stream_socket_accept(): Failed to enable crypto
ERROR [2]: stream_socket_accept(): accept failed: Success

...这部分有用,因为它将错误连接的原因识别为错误的证书,但我真的希望有一些指示 错误请求的来源,理想情况是IP地址或来源的Mac地址。

有没有办法使用stream_socket_xxx代码获取失败连接的IP地址?我知道可以获得已接受连接的IP地址,但我很难找到一种在失败的连接上获取它的方法。

0 个答案:

没有答案