给一台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
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