我正在尝试将第 3 方 PHP 扩展 (.so) 安装到 Ubuntu 11.10 上的 PHP 5.3.6-13 中,并在 Web 环境中使用它。供应商的文档建议使用 dl()
动态加载库的函数。
当我尝试他们的示例代码时,我发现 dl()
不可用( fatal error :调用未定义的函数 dl())作为 dl()
函数在 PHP 5.3 中被弃用。但是有一个 enable_dl
php.ini 中的配置规则,和 other sources说我应该能够简单地通过更改 php.ini 变量( enable_dl=On
, safe_mode=Off
,未在 disable_functions
中列出)并重新启动 apache 来使用 dl() 。当我尝试时,dl()
仍未定义。
所以我深入研究了 PHP 5.3 SAPI change notes并找到这个:
The dl() function is now disabled by default, and is now available only under the CLI, CGI, and embed SAPIs.
这是否意味着 dl()
在使用网络 SAPI 的 PHP 5.3+ 中,不仅“默认禁用”,而且实际上“无论我做什么,即使修改 PHP 配置选项,也完全不可用”?这就是我看来的样子,因为我无法获得 dl()
无论我如何调整都能正常工作。
澄清一下:我可以修改 php.ini 并直接加载扩展,所以这不是关于如何让扩展工作的问题,而是关于功能的问题dl()
及其在 PHP 5.3+ 中的状态。如果它在任何情况下都不再可用,我希望能够告诉供应商,以便他们可以更新他们的文档。但如果它应该可用,而我只是遗漏了一些东西,我也想听听。
最佳答案
This function has been removed from some SAPIs in PHP 5.3. --
dl()
因此,如果您将 ini 设置 enable_dl
设置为 on
但它仍然不起作用,那么它在您使用的 SAPI 中被禁用。
如果您想知道是指哪些 SAPI,同一页面上的更新日志会更详细:
The only SAPIs that allow
dl()
are CLI and Embed.
您没有使用这两个中的任何一个。而是使用 Extension Loading Directives你很好。
关于PHP 5.3+ enable_dl 未启用 dl()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12221650/