Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php脚本中的套接字连接在终端中工作时失败_Php_Sockets_Ssl - Fatal编程技术网

php脚本中的套接字连接在终端中工作时失败

php脚本中的套接字连接在终端中工作时失败,php,sockets,ssl,Php,Sockets,Ssl,这就是我的剧本 <?php $timeout = 10; $target = "tls://testbed-epp.nominet.org.uk:700"; $result = stream_socket_client($target, $errno, $errstr, 30, STREAM_CLIENT_CONNECT); if ($result === False) { throw new Exception("Error connec

这就是我的剧本

<?php
    $timeout = 10;
    $target = "tls://testbed-epp.nominet.org.uk:700";

    $result = stream_socket_client($target, $errno, $errstr, 30, STREAM_CLIENT_CONNECT);
    if ($result === False) {
        throw new Exception("Error connecting to $target: $errstr (code $errno)");

    }

    echo "Connected";
还有一个警告

WARNING: stream_socket_client(): Failed to enable crypto
同时跑

 openssl s_client -connect testbed-epp.nominet.org.uk:700
在一个终端连接完美

如有任何意见,将不胜感激

$timeout =- 10;
          ^----
您正在将
$timeout
设置为负10秒。e、 g.您在连接尝试开始之前就停止了连接尝试。

请尝试以下操作:

$result = stream_socket_client("testbed-epp.nominet.org.uk:700", $errno, $errstr);

编辑:您也可以通过stream\u socket\u enable\u crypto()函数设置安全连接,但您应该注意,它必须在socket连接初始化之后使用。

好的,我在apache服务器上测试了您的代码,它工作正常。你能检查一下你的apache配置吗。在configs中有一个名为
的参数“Registered Stream Socket Transports”
。只需检查
tls
是否作为值存在,否则会有其他问题,但肯定不是您的脚本

谢谢您的回复,这是一个输入错误,在原始脚本中是肯定的。所以这不是我害怕的原因,变量没有被使用,而是硬编码的超时时间
30
。执行phpinfo()显示注册的流套接字传输tcp、udp、unix、udg、ssl、sslv3、sslv2、tlsok,这很奇怪,但我注意到在您上面的错误中,
$errstr
是空的。你应该吃点东西。我尝试更改端口,但它拒绝了连接。类似地,您应该为这个错误准备一些东西——它是空的,错误代码是0。在我的原始脚本上,错误日志记录捕捉到一个警告-警告:stream\u socket\u client():无法启用加密。我更新了问题。测试脚本中没有显示警告的原因可能是我通过命令行运行了警告。您的配置中是否启用了
openssl
扩展?我刚刚意识到我已经在apache上启用了openssl支持。它已经启用了。如果您谈论的是httpd.conf loadmodule,那么它可以在不指定协议的情况下工作。问题是我无法编辑该文件,因为它是第三方库。除此之外,同一个脚本在另一台服务器上也可以正常工作,因此我认为服务器配置中存在一些问题。我最初担心的是,在安装在远程服务器的VM节点上的VPN客户端上运行。但事实证明,这不是问题所在
$result = stream_socket_client("testbed-epp.nominet.org.uk:700", $errno, $errstr);