加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php中的socket_connect上的“连接被拒绝”错误

发布时间:2020-12-13 16:45:59 所属栏目:PHP教程 来源:网络整理
导读:我试图将一些代码从perl转换为php. Perl代码如下所示: my $handle = Connect($port,$host); 我试图使用socket在PHP中做同样的事情. 我试过socket_create和socket_connect, socket_create和socket_bind,以及fsocketopen. 结果,我遇到错误消息,说“拒绝连接”
我试图将一些代码从perl转换为php.

Perl代码如下所示:

my $handle = Connect($port,$host);

我试图使用socket在PHP中做同样的事情.
我试过socket_create和socket_connect,
socket_create和socket_bind,以及fsocketopen.

结果,我遇到错误消息,说“拒绝连接”或“拒绝许可”:

socket_connect() [function.socket-connect]: unable to connect [111]: Connection refused in

我不确定这是否是我需要解决的问题,或者是权限问题,因为perl中的代码工作正常(我没有编写该代码).

我的PHP代码如下所示:

$socket =  socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
if(!$socket){
        die('Error: socket_create()');
}
if(!socket_connect($socket,$host,$port)) {
        die('Error: socket_connect()');
}

我不是管理服务器的人,因此如果是权限问题,我需要向其他人询问访问权限.我应该具体询问什么?

或者我应该使用其他功能连接到服务器?我是perl的新手,所以我不确定socket_connect是否是要使用的等效函数.

谢谢.

解决方法

如果你的perl代码能够建立连接,那么在php中也不需要额外的权限来做同样的事情.连接被拒绝意味着远程主机不允许您进入(您可能连接到错误的地址/端口).权限被拒绝更令人惊讶,很多人在启用SELinux的情况下运行httpd脚本时遇到此类问题.如果您是其中之一,请参阅SELinux手册页:

SELinux policy can be setup such that httpd scripts are not allowed to connect out to the network. This would prevent a hacker from breaking into you httpd server and attacking other machines. If you need scripts to be able to connect you can set the httpd_can_network_connect boolean on:

setsebool -P httpd_can_network_connect 1

不过,我对你的例子有一些看法.从您的Perl片段连接似乎不是标准的套接字连接;我不知道它属于哪个模块,但你确定这个电话背后没有魔力吗?由于socket_connect以点分四位表示法(对于IPv4)采用地址,因此请确保您没有传递主机名(您需要先进行DNS查找).在最后检查它是否真的是你需要的TCP套接字,而不是UDP.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读