PHP 5.3+ enable_dl 未启用 dl()?

标签 php php-extension

我正在尝试将第 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=Onsafe_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/

相关文章:

php - 无法在Docker中安装MongoDB PHP扩展

php - 删除父主题中使用的样式

PHP:PGSQL 驱动程序和 AutoCommit?

PHP:按域对电子邮件进行排序

php - 列出代码库中使用的 PHP 模块

php - spl_autoload_register 和扩展函数之间的优先级?

linux - XDebug 已安装但未显示在 phpinfo() 中

php - 使用 YouTube API v3 列出所有私有(private)视频

javascript - 附加元素未显示 CSS ISSUE JAVASCRIPT PHP

Windows 下的 Phpize