7

我正在尝试在 Ubuntu 11.10 上将第 3 方 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)并重新启动 apache 来使用 dl()。当我尝试时,dl()仍然未定义。

因此,我深入研究了PHP 5.3 SAPI 更改说明并找到了以下内容:

dl() 函数现在默认禁用,现在仅在 CLI、CGI 和嵌入 SAPI 下可用。

这是否意味着它dl()不仅在使用 web SAPI 的 PHP 5.3+ 中“默认禁用” ,而且实际上“即使修改 PHP 配置选项也完全不可用”dl()在我看来就是这样,因为无论我如何调整,我都无法开始工作。

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

4

1 回答 1

3

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

因此,如果您将 ini 设置enable_dl设置为on但它仍然无法正常工作,那么它在您使用的 SAPI 中被禁用。

如果您想知道是指哪些 SAPI,则同一页面上的更改日志更详细:

唯一允许的 SAPIdl()是 CLI 和 Embed。

您没有使用这两个中的任何一个。而是使用扩展加载指令,你很好。

于 2012-09-01T10:12:40.857 回答