php中的enable_dl配置如何有用?

时间:2014-04-27 08:47:56

标签: php apache configuration

我正在浏览php.ini,我找到了以下参数enable_dl并附有一个奇怪的描述:

  

该指令实际上仅在Apache模块版本中有用   PHP。您可以使用dl()打开动态加载PHP扩展   关闭每个虚拟服务器或每个目录。

     

关闭动态加载的主要原因是安全性。同   动态加载,可以忽略所有open_basedir   限制。默认设置是允许动态加载,除非   使用安全模式。在安全模式下,始终无法使用dl()。

我在apache上运行php,我很好奇这个参数究竟对我有用。上面提到的描述对我来说并不是很清楚,所以如果有人可以详细说明,我会感激不尽。

2 个答案:

答案 0 :(得分:5)

PHP模块(扩展)只能在PHP的启动阶段加载。例如,无法使用.user.ini files加载它们。例如extension directive只是 php.ini

这是一个提示 - 历史上.user.ini文件不是核心,而是SAPI for Apache mod_php的每个目录.htaccess设置。

为避免此限制,我们引入了dl()函数以在运行时动态加载扩展。但是只有在启用时才会使用enable_dl指令。

但是,当前的PHP SAPI在很大程度上禁用了对dl的支持,只在CLI和Embed中提供了

你还没有说过为什么你对dl()我能给出的最佳答案感到好奇,是因为它仅仅是出于神秘的原因而有用。很可能它甚至对你想要使用它的SAPI没用(你没有共享SAPI名称,但我想它不是CLI也不是Embed)。

答案 1 :(得分:0)

这是旧的,但我会回答这个。 https://www.php.net/manual/en/function.dl.php 告诉你所有你需要知道的。基本上,当您在下面的 php ini 文件中定义要加载的扩展时,这允许相同的事情,但在代码级别。然而,预加载比使用它更快,因此除非您专门在代码中加载扩展,否则最好禁用此功能。