在运行时加载PHP扩展会导致未捕获错误:调用未定义的函数dl()
我正在使用PHP7.1.11我只是在尝试这个函数在运行时加载PHP扩展会导致未捕获错误:调用未定义的函数dl(),php,apache,php-extension,Php,Apache,Php Extension,我正在使用PHP7.1.11我只是在尝试这个函数dl(),但它显示了一个错误 我在php.ini中注释了php\u fileinfo.dll,并重新启动了Apache。 我认为问题不在于.dll,因此,问题在于dl()函数 代码: 问题是,dl()函数在一段时间前已从大多数SAPI中删除,并要求您使用 电流正好警告了这一点 1。文档和历史记录 警告 该函数在PHP5.3.0中从大多数SAPI中删除,在PHP7.0.0中从PHP-FPM中删除 这是完整的更改历史记录: 7.0.0dl()在PHP
dl()
,但它显示了一个错误
我在php.ini
中注释了php\u fileinfo.dll
,并重新启动了Apache。
我认为问题不在于.dll
,因此,问题在于dl()
函数
代码:
问题是,dl()
函数在一段时间前已从大多数SAPI中删除,并要求您使用
电流正好警告了这一点
1。文档和历史记录
警告
该函数在PHP5.3.0中从大多数SAPI中删除,在PHP7.0.0中从PHP-FPM中删除
这是完整的更改历史记录:
- 7.0.0
dl()
在PHP-FPM中被禁用
- 5.3.9
dl()
在PHP-FPM中启用,但不鼓励使用
- 5.3.0
dl()
由于稳定性问题,现在在某些SAPI中被禁用。唯一允许dl()
的SAPI是CLI和嵌入式
2。有解决方案吗?
真正的问题是你真的需要一个解决方案吗?dl()
函数被弃用毕竟是有原因的
由您的系统支持您的代码库,而不是由您的代码库使系统兼容
使用extension\u loaded()
函数检查扩展是否已加载,如果未加载,则引发错误/异常,而不是尝试在运行时动态加载它
通过使用系统的php.ini
文件扩展指令,您可以安全地加载所有需要的扩展
<?php
error_reporting(-1);
echo phpversion();
echo PHP_OS;
if(!extension_loaded('fileinfo')){
dl('php_fileinfo.dll');
}
...