Pages

Friday, 30 March 2012

编译php的扩展:json

给一台CentOS系统的服务器上传了一个新的程序之后,发现部分页面显示不出来,或者不完整。查看Apache的错误日志的时候发现了大量的PHP报错提示:

PHP Fatal error: Call to undefined function json_decode()

这是典型的PHP组件未安装出现的提示,错误信息就是找不到某个函数XXX。经查,这个函数是PHP的json扩展包含的。接下来就简单了,只需要安装好json扩展即可消除这个错误,从而使网页恢复正常。

首先尝试最简单的方法,输入yum指令进行安装:yum install php-json,结果提示没有这个扩展包;再次尝试输入yum install json也不行。于是输入yum search php-,列出所有的PHP扩展包进行查找。结果还是没有找到跟json有关的扩展包。

既然yum自己不带,那么就得拿出Linux下的杀手锏——编译了。网上搜索了下相关的文章并自己实战操作了下,发现其实编译个json也并不是很难的事情。于是整理心得如下:

1、切换到tmp目录下载json源码包。进行临时的下载操作进入到tmp目录是个很好的习惯,因为Linux系统在开机的时候会自动清空tmp目录,从而保持硬盘文件的整洁。当然如果你要保留这个源码包的话,可以下载到自己喜欢的目录。

#cd /tmp

#wget http://www.aurore.net/projects/php-json/php-json-ext-1.2.1.tar.bz2

2、解压缩下载得到的文件:

#tar xvjf php-json-ext-1.2.1.tar.bz2

3、进入源码目录:

#cd php-json-ext-1.2.1

4、准备编译环境。这一步可以先不做直接进行第5步操作,如果遇到问题后再进行本步检查也无所谓。不过为了避免不必要的麻烦,我们还是检查下编译环境是否准备好了吧!

#yum install php-devel automake autoconf libtool gcc

5、准备PHP模块的编译环境:

#phpize

6、开始编译json模块:

#./configure

#make

#make install

7、配置php.ini。首先打开php.ini文件:

#vim /etc/php.ini

注:这里我的php.ini是在/etc目录下,如果你的php.ini不在这里,请修改路径为你的php.ini所在的路径。

直接在最后一行加上下面这段话:
extension=json.so

然后保存退出


8、重启Apache服务:

#/etc/init.d/httpd restart

成功重启之后,可以利用phpinfo()去查看是否有json的信息。我试着打开之前报错的页面,已经完全能正常打开了,一切OK。

资料参考:http://hi.baidu.com/zhujinyu/blog/item/3d2915121ed51659f919b852.html
资料参考:http://zhangpeng.me/?p=210
http://blog.csdn.net/helen_shw/article/details/6756135

No comments:

Post a Comment