有没有办法在不通过php.ini文件的情况下禁用 eval 功能。 我尝试过 ini_set 功能,但即使这样也行不通。
基本上我希望我的框架用户决定是否应该通过配置文件启用此功能。如果他们拒绝,我应该能够使用代码禁用它,因为我无法访问安装了我的框架的每个用户的服务器并使用php.ini文件禁用它。
正如我所说的,没有goint到php.ini文件,所以ini指令 disable_functions 不应该在答案中发布。
请帮忙。
答案 0 :(得分:7)
它不起作用,因为eval()不是函数 - 它是一种语言结构。您可以使用suhosin(PHP保护系统)禁用它。这是我所知道的唯一方式。
来自PHP.net:
Note: Because this is a language construct and not a function, it cannot be called using variable functions
答案 1 :(得分:1)
如果这是带有apache的 mod_php (不是CGI),。htaccess将起作用。除此之外......运气不好。
答案 2 :(得分:1)
https://github.com/mk-j/PHP_diseval_extension允许你在php7和php5中禁用eval。 Suhosin只在php5中稳定。
答案 3 :(得分:0)
我猜你可以用一个什么都不做的新函数来调用override_function
。 (req APD)