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 的错误信息:

要解决此问题,请使用 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.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 主机方案上无错误地运行。