跳转到内容
无痕工具库 无痕工具库

Hostinger Composer 常见问题解决教程

本文介绍如何解决 Hostinger 上常见的 Composer 问题,包括“应升级到 Composer 2”提示、权限被拒绝(Permission denied)错误、内存耗尽(Memory exhausted)错误以及 PHP 版本不匹配问题。Composer 1(已弃用)和 Composer 2 已预装在 Web Premium、Web Business 和 Cloud 主机方案中。

“应升级到 Composer 2”提示

从 PHP 8.0 版本开始,Composer 1 不再受支持。如果你在 PHP 8.0 或更高版本下尝试使用 Composer 1 安装软件包,将会看到提示你升级到 Composer 2 的错误信息:

关于 Composer 1 支持已弃用并需升级到 Composer 2 的警告横幅

要解决此问题,请使用 composer2 命令代替已弃用的 composer 命令。例如,要安装 gumlet/php-image-resize 软件包,请使用:

composer2 require gumlet/php-image-resize

系统可能会自动尝试使用 2.0 版本(如果可用)来安装该软件包。否则,你可以尝试使用 composer2 命令。

如果你需要的命令或软件包仅在 Composer 1 中可用,可以临时降低 PHP 版本。但出于安全考虑,建议你更新脚本或代码,使其与最新的 PHP 版本兼容。

权限被拒绝

Composer 1 和 Composer 2 在我们的服务器上是全局安装的,这意味着可用版本是固定的。尝试使用以下命令更新 Composer:

composer self-update 或 composer self-update --2

或者其他需要更高权限的命令,可能会导致“权限被拒绝”(Permission denied)错误:

红色终端窗口中显示的 Composer 文件系统权限被拒绝错误信息

要解决此问题,你需要针对每个需要使用 Composer 的项目在本地下载并安装它。请按照以下指南完成操作:如何在本地安装 Composer。

安装完成后,你会在安装路径中看到一个新的 composer.phar 文件:

终端中显示 ls 输出且 composer.phar 文件被高亮显示

现在,你可以通过本地安装的 composer.phar 执行任何命令(包括 self-update)。使用以下格式:

./composer.phar [COMMAND]

例如,要在本地更新 Composer,请输入:

./composer.phar self-update --2

内存耗尽

如果你在运行 Composer 命令后遇到 内存耗尽(Memory exhausted)错误,说明你的项目已超出主机方案可用的内存限制。

要解决此问题,请尝试使用取消内存限制的参数运行 Composer。全局 Composer 使用以下格式: ​

php -d memory_limit=-1 /usr/local/bin/composer [COMMAND]

本地安装的 Composer 则使用以下格式:

php -d memory_limit=-1 composer.phar [COMMAND]

如果错误仍然存在,说明你的项目可能需要更多资源。要解决此问题,你可以考虑升级主机方案。或者,你可以在本地计算机上运行高资源消耗的命令,然后将项目上传到你的主机上。

你的 Composer 依赖需要特定的 PHP 版本

通过 SSH 运行 Composer 时,使用的 PHP 版本是主机方案的默认 PHP 版本,而不是为单个网站设置的 PHP 版本。

为特定网站更改 PHP 版本只会影响该网站在浏览器中的运行方式,不会更改 SSH 或 Composer 使用的 PHP 版本。因此,即使你的网站已设置为较新的 PHP 版本,Composer 仍可能在较旧的 PHP 版本上运行。

要解决此问题,你可以选择以下方案之一:

  • 更改主机方案的 PHP 版本,使默认的 CLI PHP 满足 Composer 的要求;或者
  • 通过显式调用所需的 PHP 二进制文件,以特定 PHP 版本运行 Composer:
/opt/alt/[php-version]/usr/bin/php /usr/local/bin/composer2 [composer-command]

将 [php-version] 替换为所需的 PHP 版本(例如 php84),将 [composer-command] 替换为你要运行的实际 Composer 命令。

只要正确配置了 Composer 版本、权限、内存和 PHP 版本,你的 Composer 命令就能在 Hostinger 主机方案上无错误地运行。