如何在不转到php.ini文件的情况下禁用eval函数?

时间:2009-12-09 09:21:41

标签: php function eval

有没有办法在不通过php.ini文件的情况下禁用 eval 功能。 我尝试过 ini_set 功能,但即使这样也行不通。

基本上我希望我的框架用户决定是否应该通过配置文件启用此功能。如果他们拒绝,我应该能够使用代码禁用它,因为我无法访问安装了我的框架的每个用户的服务器并使用php.ini文件禁用它。

正如我所说的,没有goint到php.ini文件,所以ini指令 disable_functions 不应该在答案中发布。

请帮忙。

4 个答案:

答案 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)