解决虚拟主机php fsockopen函数被禁用的问题
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
一、
这篇文章主要为大家详细介绍了解决虚拟主机php fsockopen函数被禁用的问题,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
一、如何禁用fsockopen()下面是两种常用的禁用fsockopen的方法。1、修改php.ini,将 disable_functions = 后加入 fsockopen2、修改php.ini,将 allow_url_fopen = On 改为 allow_url_fopen = Off
二、如何解决fsockopen函数被禁用1、如果服务器没有同时禁用pfsockopen,那么直接将fsockopen函数替换为pfsockopen。具体操作:搜索程序中的字符串 fsockopen( 替换为 pfsockopen( 。示例如下修改前:$fp = fsockopen($host, 80, $errno, $errstr, 30);修改后:$fp = pfsockopen($host, 80, $errno, $errstr, 30);2、如果服务器同时禁用了pfsockopen,那么用其他函数代替,如stream_socket_client()。注意:stream_socket_client()和fsockopen()的参数不同。具体操作:搜索程序中的字符串 fsockopen( 替换为 stream_socket_client( ,然后,将原fsockopen函数中的端口参数“80”删掉,并加到$host。示例如下修改前:$fp = fsockopen($host, 80, $errno, $errstr, 30);修改后$fp = stream_socket_client($host."80", $errno, $errstr, 30);3、如果PHP版本低于5.0,fsockopen被禁用,又没有stream_socket_client()怎么办呢?自己写一个函数实现fsockopen的功能,参考代码:
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <code> function b_fsockopen( $host , $port , & $errno , & $errstr , $timeout ) { $ip = gethostbyname ( $host ); $s = socket_create(AF_INET, SOCK_STREAM, 0); if (socket_set_nonblock( $s )) { $r = @socket_connect( $s , $ip , $port ); if ( $r || socket_last_error() == EINPROGRESS) { $errno = EINPROGRESS; return $s ; } } $errno = socket_last_error( $s ); $errstr = socket_strerror( $errno ); socket_close( $s ); return false; } </code> |
注:关于解决虚拟主机php fsockopen函数被禁用的问题的内容就先介绍到这里,更多相关文章的可以留意