PHP5 & PHP7 禁用 eval

本文作者:wrj

1
2
3
tips:  

eval是一个语言构造器而不是一个函数,不能被disable_functions禁止。

很多教程会提供suhosin禁用eval的方法,但是不能用于php7(这里有suhosin的7.x开发版本

关于使用suhosin禁用eval的方法可以参考这篇文章:《LINUX服务器安全设置:禁止php的eval函数

安装php-dev

如果是ubuntu/debian系统,使用:(注意PHP版本

1
2
3
4
# PHP5
sudo apt-get install php-dev
# PHP7
sudo apt-get install php7.0-dev

如果是redhat/centos/fedora系统,使用:

1
yum install php-devel

下载PHP_diseval_extension

github 地址 : PHP_diseval_extension

在服务器上操作:

1
2
cd /tmp
git clone https://github.com/mk-j/PHP_diseval_extension.git

编译安装

1
2
3
4
5
cd /tmp/PHP_diseval_extension/source
phpize
./configure
make
sudo make install

编译成功后返回如下:

1
Installing shared extensions:     /usr/lib/php/20151012/

启用扩展

方法1:直接编辑php.ini 添加一行:

1
extension=diseval.so

方法2:放入mods-available,使用软链接启用:

(如下需要操作注意实际路径可能不一样)

1
vim /etc/php/7.0/mods-available/diseval.ini

添加下面一局:

1
extension=diseval.so

:wq保存退出

创建软链接:

1
ln -s /etc/php/7.0/mods-available/diseval.ini /etc/php/7.0/fpm/conf.d/

重启PHP

1
service php7.0-fpm restart