我在使用文件信息时遇到问题。它在 PHP.ini 中启用,但当我运行 php -m 时,它没有列出。我有 PHP 5.5,所以它应该是标准的,不需要 pecl。我是新手,很困惑,所以请友善。
php -m
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
ereg
exif
filter
ftp
gd
gettext
hash
iconv
imagick
imap
ionCube Loader
json
libxml
mbstring
mcrypt
mysql
openssl
pcre
Phar
posix
Reflection
session
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
XCache
XCache Cacher
xml
xmlreader
xmlwriter
zip
zlib
[Zend Modules]
XCache
XCache Cacher
the ionCube PHP Loader
在我的 PHP.ini 中
extension = "fileinfo.so"
默认情况下,此扩展自 5.3 起内置于 PHP 中,这意味着无需加载
so
。
由于它没有显示为可用模块,这可能意味着 PHP 是使用
--disable-fileinfo
开关编译的(查看 phpinfo 中的配置命令输出),这将使其无法包含在 PHP 中。
如果它是使用禁用 finfo 选项编译的,您将需要在没有该选项的情况下重新编译 PHP,或者编译并安装 PECL 模块,然后在 php.ini 中动态加载扩展。
我在 cPanel 主机上遇到了与 OP 相同的错误。解决方案是进入我的网络托管控制面板,选择“选择 PHP 版本”,然后启用“fileinfo”扩展。
只需在 cPanel 中转到“选择 PHP 版本”,然后转到“扩展”,搜索“fileinfo”,最后启用此功能,这可能会像我一样解决您的问题。
我在 Laravel 中遇到了这个问题。
有两种解决方案,都有效:
导入类
use finfo;
$finfo = new finfo(FILEINFO_MIME_TYPE);
或者如果在命名空间内使用全局类,则放置一个前导
\
。
$finfo = new \finfo(FILEINFO_MIME_TYPE);
这是我在 Cpanel 上使用 WHM 的解决方案