在运行时加载PHP扩展会导致未捕获错误:调用未定义的函数dl()

在运行时加载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

我正在使用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.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');
}
...