我正在尝试在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+中的状态。如果它在任何情况下都不再可用,我希望能够告诉供应商,以便他们可以更新他们的文档。但如果它应该可用而且我只是遗漏了一些东西,我也想听到它。
答案 0 :(得分:3)
此功能已从PHP 5.3中的某些SAPI中删除。 --
dl()
因此,如果您将ini设置enable_dl
设置为on
但仍然无效,则会在您使用的SAPI中将其禁用。
如果您想知道哪些SAPI是什么意思,那么同一页面上的更改日志会更详细:
允许
dl()
的唯一SAPI是CLI和嵌入。
您没有使用这两个中的任何一个。而是使用Extension Loading Directives,你很好。