我正在尝试在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=On
,safe_mode=Off
,disable_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,您就可以了。