PHP 5.3+ enable_dl没有启用dl()?

时间:2012-08-31 19:46:45

标签: php php-extension

我正在尝试在Ubuntu 11.10上将第三方PHP扩展(.so)安装到PHP 5.3.6-13中,并在Web环境中使用它。供应商的文档建议使用dl()函数动态加载库。

当我尝试他们的示例代码时,我发现dl()不可用(致命错误:调用未定义的函数dl())因为dl()函数在PHP 5.3中已弃用。但是php.ini中有一个enable_dl配置规则,而other sources表示我应该只需更改php.ini变量enable_dl=On,{{{{}}就可以使用dl() 1}},未在safe_mode=Off中列出)并重新启动apache。当我尝试时,disable_functions仍未定义。

所以我深入研究了PHP 5.3 SAPI change notes并找到了这个:

  

默认情况下,dl()函数现已禁用,现在只能在CLI,CGI和嵌入的SAPI下使用。

这是否意味着使用网络SAPI在PHP 5.3+中dl()不仅“默认禁用”,而且实际上 “完全无法使用我甚至修改PHP配置选项“ ?这就是我的感觉,因为无论我调整什么,我都无法让dl()工作。

澄清一下:我可以修改php.ini并直接加载扩展,所以关于如何使扩展工作的问题,而不是关于函数的问题dl()及其在PHP 5.3+中的状态。如果它在任何情况下都不再可用,我希望能够告诉供应商,以便他们可以更新他们的文档。但如果它应该可用而且我只是遗漏了一些东西,我也想听到它。

1 个答案:

答案 0 :(得分:3)

  

此功能已从PHP 5.3中的某些SAPI中删除。 -- dl()

因此,如果您将ini设置enable_dl设置为on但仍然无效,则会在您使用的SAPI中将其禁用。

如果您想知道哪些SAPI是什么意思,那么同一页面上的更改日志会更详细:

  

允许dl()的唯一SAPI是CLI和嵌入。

您没有使用这两个中的任何一个。而是使用Extension Loading Directives,你很好。