dl不启用dl()?
我试图在Ubuntu 11.10上将第三方PHP扩展(.so)安装到PHP 5.3.6-13并在Web环境中使用它。 供应商的文档建议使用dl()
函数动态加载库。
当我尝试他们的示例代码时,我发现dl()
不可用(致命错误:调用未定义的函数dl()),因为dl()
函数在PHP 5.3中已弃用。 但在php.ini中有一个enable_dl
配置规则,其他来源表示我应该只需通过更改php.ini变量( enable_dl=On
, safe_mode=Off
,未在disable_functions
列出)就可以使用dl(),然后重新启动阿帕奇。 当我尝试时, dl()
仍然是未定义的。
因此,我深入了解PHP 5.3 SAPI变更注释并找到它:
dl()函数现在默认是禁用的,现在只能在CLI,CGI和嵌入SAPI下使用。
这是否意味着dl()
不仅在PHP 5.3+中使用Web SAPI“被默认禁用”,而且实际上“无论我修改PHP配置选项时都完全不可用” ? 这就是我所认为的,因为无论我调整了什么,我都无法让dl()
工作。
澄清:我可以修改php.ini并直接加载扩展,所以这不是一个关于如何让扩展工作的问题,而是关于函数dl()
及其在PHP 5.3+中的状态。 如果在任何情况下它不再可用,我希望能够告诉供应商,所以他们可以更新他们的文档。 但如果它应该是可用的,我只是错过了一些东西,我也想听到。
该函数已从PHP 5.3中的一些SAPI中删除。 - dl()
因此,如果您将ini设置enable_dl
设置为on
,并且仍然不起作用,那么它在您使用的SAPI中被禁用。
如果你想知道哪些是SAPI,那么同一页上的更新日志就更加详细:
唯一允许dl()
SAPI是CLI和Embed。
你没有使用这两个中的任何一个。 相反,使用扩展加载指令,你很好。
链接地址: http://www.djcxy.com/p/11135.html