PHP安装Suhosin扩展禁用eval函数

鸿辰 PHP 1.84 K

说明

eval函数是通过 zend 来实现的,不能用 php.ini 直接关闭掉,可以利用安装 Suhosin 扩展来禁用 eval 函数。

选择扩展版本并下载

编译安装扩展

切换到扩展源码根目录依次执行

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
  • 说明:
    • /usr/local/php/bin/phpizephpize 的路径
    • /usr/local/php/bin/php-configphp-config 的路径

配置

编辑PHP的配置文件

  • 在模块配置的位置加入
    extension=suhosin.so
    说明: 如果是 php7 ,将 suhosin.so 改成 suhosin7.so
  • 在配置文件末尾加入
    [suhosin]
    suhosin.executor.disable_eval = on

查看模块是否加载成功

php -m

如果出现 suhosinsuhosin7 则表示模块加载成功

测试是否可执行 eval 函数

新建文件 a.php , 加入下面的代码

<?php
$data = "array('key1'=>'value1','key2'=>'value2','key3'=>'value3','key4'=>'value4')";
$arr = eval("return $data;");
var_dump($arr);

保存文件,然后执行

php a.php

如果出现下面的错误,则表示禁用成功!

PHP Fatal error:  SUHOSIN - Use of eval is forbidden by configuration in a.php(4) : eval()'d code on line 1

标签: php