文件信息 PHP 错误 - 未找到“finfo”类,但模块位于 php.ini 中

问题描述 投票:0回答:5

我在使用文件信息时遇到问题。它在 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"
php php-extension fileinfo
5个回答
6
投票

默认情况下,此扩展自 5.3 起内置于 PHP 中,这意味着无需加载

so

由于它没有显示为可用模块,这可能意味着 PHP 是使用

--disable-fileinfo
开关编译的(查看 phpinfo 中的配置命令输出),这将使其无法包含在 PHP 中。

如果它是使用禁用 finfo 选项编译的,您将需要在没有该选项的情况下重新编译 PHP,或者编译并安装 PECL 模块,然后在 php.ini 中动态加载扩展。


2
投票

我在 cPanel 主机上遇到了与 OP 相同的错误。解决方案是进入我的网络托管控制面板,选择“选择 PHP 版本”,然后启用“fileinfo”扩展。


0
投票

只需在 cPanel 中转到“选择 PHP 版本”,然后转到“扩展”,搜索“fileinfo”,最后启用此功能,这可能会像我一样解决您的问题。


0
投票

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

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

  1. 导入类

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

    \

     $finfo = new \finfo(FILEINFO_MIME_TYPE);
    

0
投票

这是我在 Cpanel 上使用 WHM 的解决方案

  1. 以 root 身份登录 WHM,然后在 WHM 左上角的搜索字段中搜索“easy”。
  2. 点击EasyApache 4.软件
  3. 在“当前安装的软件包”部分中,单击“自定义”按钮。
  4. 在“搜索”字段中,输入“fileinfo”。单击您想要为其安装 PHP 扩展的 PHP 版本旁边的切换按钮。
  5. 单击左侧的“审阅”选项。
  6. 确认您选择的选项列在“请查看以下您将通过配置此配置文件安装的软件包列表”下。部分。然后,单击“配置”按钮。
  7. 安装完成后,您将收到一条消息:“配置过程已完成”。单击“完成”按钮完成。
© www.soinside.com 2019 - 2024. All rights reserved.