在运行时加载PHP扩展名会导致未定义的错误:呼叫未定义的函数DL()



我正在使用 php 7.1.11 我只是尝试此功能dl(),但它显示出错误。

我在php.ini中评论了php_fileinfo.dll,并重新启动了Apache。我认为问题不在.dll上,因此,问题是dl()功能。

代码:

<?php
error_reporting(-1);
echo phpversion();
   
echo PHP_OS;
if(!extension_loaded('fileinfo')){
    dl('php_fileinfo.dll');
}
...

错误:

7.1.11winnt致命错误:未定的错误:D: xampp htdocs php 1.php:7

call do do n d call to d to d: xampp htdocs htdocs htdocs htdocs htdocs htdocs

堆栈跟踪:#0 {main}在d: xampp htdocs php 1.php上扔下,第7行7

问题是dl()函数已从大多数SAPI中删除,并要求您使用扩展名加载指令。

当前的PHP文档对此警告。

1。文档和历史

警告 此函数从PHP 5.3.0中的大多数SAPI中删除,并从PHP 7.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_loaded()函数检查扩展名是否已加载,如果不引起错误/异常,而不是尝试在运行时动态加载它。

您可以使用系统的php.ini文件扩展指令

,可以加载所有想要的扩展名。

相关内容

最新更新