在CentOS/RHEL5下安装PHP的filter和json扩展

| 3 Comments | No TrackBacks
php v5.2主要新增了几个特性:

新的内存管理器据说性能有提高, 但是filter和json两个扩展的提供, 可以更好的提高开发效率.
但是CentOS 5.x和RHEL 5.x上的php版本是5.1.6, 没有filter和json, 所以手工安装

首先要安装php-devel和pcre-devel, 至于gcc那些必不可少的就不用说了
yum install php-devel pcre-devel
php 5.1.6的源码树中没有包含php_pcre.h header文件, 所以需要下载一个php5.2源码.
cd /opt/src
wget http://cn2.php.net/get/php-5.2.6.tar.bz2/from/cn.php.net/mirror
tar jxvf php-5.2.6.tar.bz2
然后去下载filter和json两个扩展的源文件, 网页地址分别是: filter json
wget http://pecl.php.net/get/filter-0.11.0.tgz
wget http://pecl.php.net/get/json-1.2.1.tgz
解压缩
tar zxf filter-0.11.0.tgz
tar zxf json-1.2.1.tgz
修改filter的logical_filters.c
vim logical_filters.c
将这行
#include "ext/pcre/php_pcre.h"
修改为
#include "/opt/src/php-5.2.6/ext/pcre/php_pcre.h"
保存并退出文件
分别进入filter和json的src目录
phpize
./configure
make install
执行三条命令即可
echo 'extension=filter.so' > /etc/php.d/filter.ini
echo 'extension=json.so' > /etc/php.d/json.ini
service httpd restart
以上命令在CentOS 5 Final 2.6.18-53.el5 x86_64上验证通过

btw:
json中的头文件不需要修改.
filter的pecl网页提示已经不再维护或者被挂起了, 但是php5.2.6的ext/filter的src还是2005-10-27的版本, 而pecl的filter都到了2006-10-31了。

No TrackBacks

TrackBack URL: http://blog.suchasplus.com/mt/mt-tb.cgi/197

3 Comments

我按照这个方法安装了filter和json库,结果报错:[root@0_227 modules]# /usr/bin/php -m
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/filter.so' - /usr/lib/php/modules/filter.so: undefined symbol: php_pcre_exec in Unknown on line 0
PHP Warning: PHP Startup: json: Unable to initialize module
Module compiled with module API=20060613, debug=0, thread-safety=0
PHP compiled with module API=20050922, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/filter.so' - /usr/lib/php/modules/filter.so: undefined symbol: php_pcre_exec in Unknown on line 0
PHP Warning: PHP Startup: json: Unable to initialize module
Module compiled with module API=20060613, debug=0, thread-safety=0
PHP compiled with module API=20050922, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
我的系统是:
[root@0_227 modules]# uname -a
Linux 0_227 2.6.18-308.13.1.el5PAE #1 SMP Tue Aug 21 17:50:26 EDT 2012 i686 i686 i386 GNU/Linux
[root@0_227 modules]# cat /etc/redhat-release
CentOS release 5.7 (Final)
系统自带的php版本是5.1.6
求指导。。

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/filter.so' - /usr/lib/php/modules/filter.so: undefined symbol: php_pcre_exec in Unknown on line 0
为何我用你的方法报上面那个错误。。
我的是Centos 5.7 32bit的。
系统自带的是php 5.1.6,php_pcre.h头文件来自php 5.2.13。
求指导~~

Leave a comment