星期四, 十月 13, 2011

修复uc_client里面misc.php的php_network_getaddresses: getaddrinfo failed: Name or service not known

在有的服务器上会发现这种错误:
fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known Error File: /uc_client/model/misc.php at 99 line.
其实这是由于域名解析造成的,据有的人说可以在/etc/hosts里面添加条目来修复这个问题。但是对于虚拟主机用户来说,这是不可能的吧。而且这个办法似乎也不一定奏效。我搜索了一下,StackOverflow有一条解答很清晰:http://stackoverflow.com/questions/2661546/php-network-getaddresses-getaddrinfo-failed-name-or-service-not-known

根据这个解答,我把misc.php的代码改了改。找到99行附近,把如下代码
                if (function_exists('fsockopen')) {
                        $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
                } elseif (function_exists('pfsockopen')) {
                        $fp = @pfsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout
                } else {
                        $fp = false;
                }
修改为:
                if(function_exists('fopen')) {
                        $fp = @fopen("http://".($ip ? $ip : $host).":".$port, "rw");
                }
elseif (function_exists('fsockopen')) {
                        $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
                } elseif (function_exists('pfsockopen')) {
                        $fp = @pfsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout
                } else {
                        $fp = false;
                }
问题应该就得到修复了。






没有评论: