Loading a PHP extension at runtime results in Uncaught Error: Call to undefined function dl()
Loading a PHP extension at runtime results in Uncaught Error: Call to undefined function 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 Fatal error: Uncaught Error: Call to undefined function dl() in D:\xampp\htdocs\php.php:7
Stack trace: #0 {main} thrown in D:\xampp\htdocs\php.php on line 7
问题是 dl()
功能已从大多数 SAPI 中删除,您被要求改用 Extension Loading Directives。
当前的 PHP Documentation 就此发出警告。
1.文档和历史
Warning
This function was removed from most SAPIs in PHP 5.3.0, and was removed from PHP-FPM in PHP 7.0.0.
这是完整的变更历史:
- 7.0.0
dl()
在 PHP-FPM 中被禁用。
- 5.3.9
dl()
在 PHP-FPM 中启用,尽管不鼓励。
由于稳定性问题,- 5.3.0
dl()
现在在某些 SAPI 中被禁用。唯一允许 dl()
的 SAPI 是 CLI 和 Embed.
2。有解决办法吗?
真正的问题是您真的需要解决方案吗?毕竟 dl()
函数被弃用是有原因的。
It's up to your system to support your codebase and not your codebase to make the system compliant.
使用 extension_loaded()
函数检查扩展是否已加载,如果未加载则引发 error/exception 而不是尝试在运行时动态加载它。
您可以使用系统的 php.ini
文件 扩展指令
安全地加载所有您想要的扩展
我正在使用 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 Fatal error: Uncaught Error: Call to undefined function dl() in D:\xampp\htdocs\php.php:7
Stack trace: #0 {main} thrown in D:\xampp\htdocs\php.php on line 7
问题是 dl()
功能已从大多数 SAPI 中删除,您被要求改用 Extension Loading Directives。
当前的 PHP Documentation 就此发出警告。
1.文档和历史
Warning This function was removed from most SAPIs in PHP 5.3.0, and was removed from PHP-FPM in PHP 7.0.0.
这是完整的变更历史:
- 7.0.0
dl()
在 PHP-FPM 中被禁用。 - 5.3.9
dl()
在 PHP-FPM 中启用,尽管不鼓励。
由于稳定性问题, - 5.3.0
dl()
现在在某些 SAPI 中被禁用。唯一允许dl()
的 SAPI 是 CLI 和 Embed.
2。有解决办法吗?
真正的问题是您真的需要解决方案吗?毕竟 dl()
函数被弃用是有原因的。
It's up to your system to support your codebase and not your codebase to make the system compliant.
使用 extension_loaded()
函数检查扩展是否已加载,如果未加载则引发 error/exception 而不是尝试在运行时动态加载它。
您可以使用系统的 php.ini
文件 扩展指令