Composer 错误:“系统中缺少 PHP 扩展文件信息”

Posted

技术标签:

【中文标题】Composer 错误:“系统中缺少 PHP 扩展文件信息”【英文标题】:Composer error: "PHP extension fileinfo is missing from your system" 【发布时间】:2022-01-19 23:40:34 【问题描述】:

我正在尝试安装 Laravel 包 Intervention Image 并且当我运行 composer update:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - intervention/image 2.0.5 requires ext-fileinfo * -> the requested php extension fileinfo is missing from your system.
    - intervention/image 2.0.4 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
    - intervention/image 2.0.3 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
    - intervention/image 2.0.2 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
    - intervention/image 2.0.1 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
    - intervention/image 2.0.0 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
    - Installation request for intervention/image 2.* -> satisfiable by intervention/image[2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5].

我有 php 5.4 并且在 php.iniphpinfo() 中启用了扩展:

                    fileinfo

fileinfo support                  enabled
version                           1.0.5

并重新启动 apache...但仍然没有运气。

【问题讨论】:

【参考方案1】:

根据你的平台,可能有更多的php.ini,如果你使用的是Wamp,那么有两个:

wamp\bin\php\php5.4.3\php.ini wamp\bin\apache\Apache2.4.4\bin\php.ini

确保扩展名在两者中都未注释,然后再次重新启动 apache。

【讨论】:

我的 C:\Bitnami\wampstack-5.5.27-0\apache2\bin 中没有任何 php.ini。同样在 phpinfo() 中说 C:\Bitnami\wampstack-5.5.27-0\php\php.ini 。在这个文件中,我没有注释扩展名,但我仍然有问题。你知道问题可能是什么吗?【参考方案2】:

显然这是因为 web/apache 和 CLI 有单独的 php.ini 文件,并且因为 composer 使用 CLI 而 phpinfo() 使用主要的 php.ini ,所以会出现问题。

如果您在 CLI 中运行 php -m 并且看不到模块的名称,您应该找到 CLI php.ini(在我的情况下为 php-cli.ini 并添加扩展名。例如 extension=php_fileinfo.dll

【讨论】:

我将该行添加到我的 php-cli.ini 中,但在服务器重新启动后仍然存在问题。我已取消注释每个 php.ini 文件中的行。还是没有运气。 @americanknight 当你运行php-m 时,模块的名称会出现吗? 不,它没有出现在列表中。我在 Windows 7 上运行 UniServer 11.6。 我找不到 php-cli.ini 文件。它位于哪里? 输入php --ini查看php正在使用哪个ini文件【参考方案3】:

Windows 用户:只需编辑 php.ini 并取消注释此行:

extension=php_fileinfo.dll

记得重启 Apache 以使新的 php.ini 生效。

【讨论】:

非常适合 IIS。 我在使用 PHP Tools for Visual Studio 时遇到了麻烦。我在 Visual Studio 中运行 Composer 期间使用 Process Monitor 解决了这个问题(“安装新的 Composer 包...”)。我发现这实际上触发了哪个 PHP.EXE,然后 Composer 调用实际使用了哪个 PHP.INI。将扩展添加到正确的 PHP.INI 后,Composer 运行成功。【参考方案4】:

我也有同样的问题。通过转到wamp/bin 文件夹并搜索.ini 进行修复。你会发现几个php.ini 文件。

编辑extension=php_fileinfo.dll 行,删除 ;在每个人的乞求下。重新启动 WAMP,在命令行中输入php -m 以检查 fileinfo 现在是否存在。

应该可以。

【讨论】:

【参考方案5】:

我也有同样的问题。现已修复。 你也可以取消注释这一行

extension=php_fileinfo.dll  

在以下文件中:

    php.ini-development php.ini-production

请不要忘记restart您的 Apache。 希望这会有所帮助。

【讨论】:

【参考方案6】:

在 php ini 配置文件中取消注释 extension=php_fileinfo.dll(如果需要,可以使用 php.ini-development) 然后,如果您使用 XAMPP,请使用 apache shell。它可以从 XAMPP 控制面板加载 运行 php -m 以验证扩展是否已加载。 然后运行作曲家安装。

【讨论】:

【参考方案7】:

在 Windows 上,我必须在我的 php.ini 文件中添加行 extension=php_fileinfo.dll

【讨论】:

【参考方案8】:

如果有人想知道如何在 cpanel(基于 linux)中执行此操作,只需在搜索框中搜索选择 php 版本并单击它,下一个屏幕您将看到当前的 php 版本,接下来您会看到许多带有一些值的复选框,所以现在在这里您可以检查 phpinfo 并单击保存以避免您的作曲家错误。

【讨论】:

谢谢,但在我的 CPanel 中没有这样的页面可以检查:( 你必须有搜索选项上面搜索“php”你会在那里“选择php版本”,如果你没有找到它,那么你使用的是哪个版本的cpanel? 找不到。 CPanel 82.0.16 我在 CPanel 上有 2 个网站。其中一个具有扩展部分,但我无法通过接口定义每个子域的 php 版本,所以我在 .htaccess 文件中定义了它。我发送给您的另一个 CPanel 版本没有扩展名,但我可以通过接口定义每个子域的 PHP 版本而无需编码。所以对于第一个,我要求提供商激活我想要的扩展,他做到了。【参考方案9】:

对我来说,使用 php 7.4.x 和 Windows 10 是不同的。

我用php --ini检查了PHP在CLI模式下使用了哪个php.ini文件。

它显示 C:\php7\php.ini - 我之前解压缩 PHP 的地方(并且还指向 Composer 那里)。

然后我需要在该文件中取消注释 extension=fileinfo

【讨论】:

以上是关于Composer 错误:“系统中缺少 PHP 扩展文件信息”的主要内容,如果未能解决你的问题,请参考以下文章

Composer [UnexpectedValueException] 错误将尝试使用 composer 安装 github 项目

Composer 无法在 Windows 上运行,出现 [Composer\Exception\NoSslException] 错误

错误:无法解析“composer.lock”;它必须是 Composer 生成的有效锁文件

composer update的错误使用以及如何更新composer.lock文件

Laravel 5/Composer 终端错误:sh.exe”:composer:找不到命令

Composer 安装时出现 SSL 错误