php 5.2之后,默认会装有filter extension,这个扩展可以帮助php开发者过滤用户输入的内容,由php的创始人之一Rasmus Lerdorf提供,可以见我早期的文章介绍。
Q. How do I install filter extension for safely dealing with input parameters supplied via a web form using filter_var()?
A. This extension is part of PHP Core version 5.20 and above. Unfortunately, RHEL / CentOS comes with PHP version 5.1.6. So you need to install this extension by typing the following commands.
由于RHEL / CentOS自带的php版本是5.1.6,那么只好手工安装filter扩展。安装过程:
安装php-devel
为了编译php extensions,需要安装php-devel包:# yum install php-devel
下载php的源码
php 5.1.6的源码树中没有包含php_pcre.h header文件, 所以需要另行下载一个php源码. 从php.net下载最新版本的源码并放到/opt目录:# cd /opt
# elinks 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 extension
在pecl上找到最新的filter源码:# cd /opt
# wget http://pecl.php.net/get/filter-0.11.0.tgz
安装filter extension
解压文件:# tar -jxvf filter-0.11.0.tgz
# cd filter-0.11.0
打开logical_filters.c文件:# vi logical_filters.c
找到下面的代码行:
#include "ext/pcre/php_pcre.h"
修改成 (php_pcre.h的绝对路径):
#include "/opt/php-5.2.6/ext/pcre/php_pcre.h"
保存并关闭文件. 最后输入下面命令来编译filter扩展:# phpize
# ./configure
# make install
配置Filter Extension
输入下列命令:# echo 'extension=filter.so' > /etc/php.d/filter.ini
然后重启web server即可。