PHP fsockopen() 失败,但 telnet 工作

Posted

技术标签:

【中文标题】PHP fsockopen() 失败,但 telnet 工作【英文标题】:PHP fsockopen() fails, but telnet works 【发布时间】:2011-07-14 18:09:35 【问题描述】:

我正在尝试让 Sphinx Search 在 Windows7 下工作。到目前为止一切都很好,只是 php 无法连接到正在运行的服务。

只有远程网络工作:

远程登录本地主机 3312

php: fsockopen("localhost", 3312, $errno, $errstr, 30);

我决定测试一些其他端口...

两个工作:

telnet 本地主机 80

php: fsockopen("localhost", 80, $errno, $errstr, 30);

只有远程网络工作:

远程登录本地主机 3306

php: fsockopen("localhost", 3306, $errno, $errstr, 30);

可能是因为端口是 3312 和 3306 上的二进制数据吗?

【问题讨论】:

“失败”是什么意思?发生什么了?您收到什么错误消息?如果打开失败,PHP 应该会给你一条警告信息,说明失败的原因。 Warning: fsockopen() [function.fsockopen]: 无法连接到 localhost:3312 (连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应。) 【参考方案1】:

尝试使用 127.0.0.1 而不是 localhost - 很多时候这可能会显示依赖操作系统来为您查找主机名。如果这可行,那么它不是 PHP,而是 PHP 和操作系统之间的链接。

【讨论】:

是的,这适用于端口 3312 和 3306。奇怪的是端口 80 与 localhost 一起使用。

以上是关于PHP fsockopen() 失败,但 telnet 工作的主要内容,如果未能解决你的问题,请参考以下文章

PHP fsockopen() cookie

PHP异步请求之fsockopen()方法详解

如何解决使用php发送邮件的错误

使用 fsockopen 的警报握手失败 paypal IPN 集成

PHP fsockopen函数详解

PHP的fsockopen函数详解