说明
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/phpize
是phpize
的路径/usr/local/php/bin/php-config
是php-config
的路径
配置
编辑PHP的配置文件
- 在模块配置的位置加入
说明: 如果是extension=suhosin.so
php7
,将suhosin.so
改成suhosin7.so
- 在配置文件末尾加入
[suhosin] suhosin.executor.disable_eval = on
查看模块是否加载成功
php -m
如果出现 suhosin
或 suhosin7
则表示模块加载成功
测试是否可执行 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
文章来源:
鸿辰
版权声明:本网站可能会转载或引用其他来源的文章、图片、数据等信息。对于这些转载内容,版权归原作者所有。本站尊重原作者的劳动成果,并在可能的情况下注明来源和作者。如有任何版权问题,请及时联系,收到后将第一时间处理。