我正在尝试在Ubuntu 11.10上的PHP 5.3.6-13中安装一个第三方PHP扩展名(.so),并在Web环境中使用它。供应商的文档建议使用dl()函数动态加载库。

当我尝试他们的示例代码时,我发现dl()不可用(致命错误:未定义函数dl()的调用),因为PHP 5.3中不推荐使用dl()函数。但是php.ini中有一个enable_dl配置规则,并且other sources说我只需更改php.ini变量(enable_dl=Onsafe_mode=Offdisable_functions中未列出)并重新启动apache就可以使用dl()。当我尝试这样做时,dl()仍未定义。

因此,我研究了PHP 5.3 SAPI change notes并找到了它:



这是否意味着dl()不仅在使用Web SAPI的PHP 5.3+中默认是“禁用”,而且实际上是“即使我修改PHP配置选项也完全不可用” 吗?这就是我的样子,因为无论我进行什么调整都无法使dl()正常工作。

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

最佳答案



因此,如果将ini设置enable_dl设置为on仍然不起作用,则在您使用的SAPI中将其禁用。

如果您想知道是什么SAPI,那么该页面上的更改日志会更加详细:



您没有使用这两个中的任何一个。而是使用Extension Loading Directives,您就可以了。

10-04 11:50
查看更多