文件信息PHP错误-类'没有找到,但模块在php.ini中


File Info PHP Error - Class 'finfo' not found but the module is in php.ini

我有一个问题得到文件信息工作。它在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

In my PHP.ini

extension = "fileinfo.so"

默认情况下,这个扩展从5.3开始内置到PHP,这意味着没有so要加载。

由于它没有显示为可用模块,这可能意味着PHP是用--disable-fileinfo开关编译的(查看phpinfo中的Configure Command输出),这会禁用它被包含在PHP中。

如果它是用禁用finfo选项编译的,那么你需要重新编译PHP而不使用该选项,或者编译并安装PECL模块,然后在PHP .ini中动态加载扩展。

我在cPanel主机上有相同的错误。解决方案是进入我的虚拟主机控制面板,选择"选择PHP版本";然后启用"fileinfo"扩展。

点击" Select PHP version ";在你的cPanel中,然后进入" extension ",搜索"fileinfo",然后最后启用这个功能,这可能会解决你的问题,就像它做了我。

我在Laravel中遇到了这个问题。

有两种解决方案,都有效:

  1. 导入类

     use finfo;
     $finfo = new finfo(FILEINFO_MIME_TYPE);
    
  2. 或者如果在命名空间中使用全局类,则在前面放置'

     $finfo = new 'finfo(FILEINFO_MIME_TYPE);