Archive for 12月, 2010
如何解决linux下apache启动时httpd: apr_sockaddr_info_get() failed for 报错
配置一台云服务器,干干净净的系统,我用Yum安装了apache后,发现启动时候报错
httpd: apr_sockaddr_info_get() failed for xxxx
虽然启动还算正常,但不知道会不会有什么影响。
google之后找到了解决办法:有两个方向,如下
这个问题应该是没有在 /etc/httpd/conf/httpd.conf 中设定 ServerName 所以它会用主机上的名称来取代,首先会去找 /etc/hosts 中有没有主机的定义。
所以要解决这个问题可以设定 ServerName 或者在 /etc/hosts 中填入自己的主机名称 MYHOST,像这样:
>vi /etc/hosts
127.0.0.1 localhost.localdomain localhost MYHOST
或者是
将httpd.conf中的ServerName 前面的 # 去掉。
apache 2.2 的虚拟机的配置放置在conf/extra/httpd-vhosts.conf 中
如何解决PHP XML RPC中文乱码问题
为了一个项目在做XMLRPC的应用。发现项目服务器上没有XMLRPC组件,又要重新编译PHP,头大…
找了很多资料发现,国外的一个叫PHPXMLRPC的开源代码很好用。直接代替XMLRPC组件。他在GOOGLE有托管。国内用的还不多,很多东西都要自己摸索着搞。
这个PHPXMLRPC写的很好,我们只要把它用到的时候加载进来,然后NEW一下就好。以下是我这里总结的相对好用的用法
//载入相关文件
require ‘xmlrpc.inc’;
$forxmlrpc = array(); //初始化数组,传输必要参数
$forxmlrpc['title'] = $content['title'];
$forxmlrpc['contentid'] = $contentid;
$f=new xmlrpcmsg(’popcms.new’,array(new xmlrpcval(1, “int”),new xmlrpcval(’murray’, “string”),new xmlrpcval(’123′, “string”),php_xmlrpc_encode($forxmlrpc))); //新建一个XML格式
$c=new xmlrpc_client(”xmlrpc.php”, “www.popcms.net”, 80); //新建一个客户端
$c->request_charset_encoding = ‘utf-8′; //初始化时的编码格式,如果有中文,这一点是必须的,不然有乱码
$c->setDebug(1); //开启出错选项
$r=&$c->send($f); //发送请求
//以下是调试返回数据的代码
if(!$r->faultCode())
{$v=$r->value();
print “</pre><br/>State number ” . $stateno . ” is “. htmlspecialchars($v->scalarval()) . “<br/>”;
}else{
print “An error occurred: “;
print “Code: ” . htmlspecialchars($r->faultCode()). ” Reason: ‘” . htmlspecialchars($r->faultString()) . “‘</pre><br/>”;
}
虽然现在可以正常发送接收数据,但是还是会出现传递过程中的中文乱码。
原来PHPXMLRPC会自动转换编码,但提交后是乱码,是因为默认指定的是ISO-8859-1编码,而这个参数就是xmlrpc_internalencodeing,具体的操作步骤是:
打开?xmlrpc.inc 第222行, 将
$GLOBALS['xmlrpc_internalencoding']=’ISO-8859-1′;
改成
$GLOBALS['xmlrpc_internalencoding']=’UTF-8′;
至此XMLRPC的中文乱码问题解决了。

