PHP套接字错误Linux上的权限被拒绝
发布时间:2020-12-13 22:05:27 所属栏目:PHP教程 来源:网络整理
导读:我在 Linux 2.6.34上安装了php 5.4.13. 我使用套接字创建简单的客户端/服务器页面,但它不起作用. 它给予权限拒绝错误 下面是我的PHP代码 if (false == ($socket = socket_create(AF_INET,SOCK_STREAM,0))) // create socket { $stringData= date("D M d,Y g:
我在
Linux 2.6.34上安装了php 5.4.13.
我使用套接字创建简单的客户端/服务器页面,但它不起作用. 它给予权限拒绝错误 下面是我的PHP代码 if (false == ($socket = socket_create(AF_INET,SOCK_STREAM,0))) // create socket { $stringData= date("D M d,Y g:i A"). " socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "<br>"; echo $stringData; } else { $timeout = array('sec'=>5,'usec'=>500000); socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,$timeout); if(false==($result = socket_connect($socket,$host,$port))) { $stringData= date("D M d,Y g:i A"). " socket_connect() failed: reason: " . socket_strerror(socket_last_error()) . "<br>"; echo $stringData; socket_close($socket); } else { $stringData= date("D M d,Y g:i A"). " Socket connected succefully <br>"; echo $stringData; if(false==(socket_write($socket,$command,strlen($command)))) { $stringData= date("D M d,Y g:i A"). " socket_write() failed: reason: " . socket_strerror(socket_last_error()) . "<br>"; echo $stringData; socket_close($socket); } else { if(false===($cmd = socket_read ($socket,65536))) { //10060 for windows and 11 for linux if(10060!=socket_last_error() && 11!=socket_last_error()) { $stringData= date("D M d,Y g:i A"). " socket_read() failed: reason: " . socket_strerror(socket_last_error()) . "<br>"; echo $stringData; socket_close($socket); } switch(socket_select($r = array($socket),$w = array($socket),$f = array($socket),5)) { case 2: $refused=1; break; } if($refused==1) { $stringData= date("D M d,Y g:i A"). " socket_read() failed: reason: Connection Refused <br>"; $ourFileHandle = fopen(SOCKET_LOG,'a'); echo $stringData; socket_close($socket); } } else { echo "<pre>".html_entity_decode(print_r($cmd,true))."</pre>"; } } } } 上面的代码在命令提示符下正常工作,但是当从任何浏览器打开页面时,它会给出错误Permission denied. 从终端运行php的命令:/usr/local/rootfs / php5 / bin / php /www/socket_client.php 解决方法
检查php.ini设置中的参数“safe_mode”.它应该是“关闭”.
另一个问题可能是由于“selinux”阻止你的mod_php(apache进程)通过socket连接. # check if it's enabled: /usr/sbin/sestatus -v to add the connecting rule: setsebool httpd_can_network_connect=1 如果要完全禁用它: setenforce 0 此外,出于调试原因,请禁用apache / PHP上的任何安全模块.例如,如果正在运行,请尝试禁用Suhosin. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |