Composer 更新内存限制

新手上路,请多包涵

我需要在我的主机上运行 composer update 所以我使用 ssh 登录并尝试在我安装了 Laravel 和 composer 的 /www 文件夹中运行以下命令:

 composer update

我收到此错误:

在此处输入图像描述

我正在与我的托管服务提供商联系,他们告诉我运行命令:

 php -d memory_limit=512M composer update

我运行了这个命令,但我得到:“无法打开文件:作曲家”

该怎么办?这里的解决方案是什么?

原文由 Andrew 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 773
2 个回答

当您运行 composer update 时,操作系统将查看配置的路径并尝试找到具有该名称的可执行文件。

运行时 php composer updatecomposer 字符串被视为 PHP 的参数,不会在任何路径中搜索。您必须提供完整路径才能运行它。

运行 which composer 会告诉你操作系统在哪里找到 composer 可执行文件,然后你只需在 PHP 命令中使用完整路径:

 $>which composer
/usr/local/bin/composer

$>php -d memory_limit=512M /usr/local/bin/composer update
...

请注意,512MB 可能太少了。我的看法是它会很高兴地占用 1GB 或更多,这取决于您使用的依赖项数量和理论上允许的版本的种类,即如果您允许 Symfony ~2.3 ,那么您让 Composer 处理与使用 ~2.7 相比,有更多可能的版本。

另请注意,在生产机器上运行 Composer 并不是最好的主意。您必须有权访问 Github,可能需要提供访问凭据,安装 VCS 工具,并且如果在更新期间任何远程托管服务器处于脱机状态,您将很容易破坏您的站点。在完成所有准备工作的部署系统上使用 Composer 是一个更好的主意,然后将所有文件移动到生产服务器上。

更新

现在是 2020 年,Composer 管理内存的方式发生了很大变化。最重要的是,Composer 会在遇到设置过低的限制时自行增加内存限制。然而,这会立即触发安装内存太少的机器上内存不足的问题。您可以通过设置诸如 COMPOSER_MEMORY_LIMIT=512M 之类的环境变量来使 Composer 使用更少的内存,但是如果 Composer 需要更多内存才能正确运行,这将产生问题。

我的主要观点仍然正确:不要在安装了太少内存的机器上运行 Composer。您可能需要 1.5 GB 的可用内存才能更新所有内容。

原文由 Sven 发布,翻译遵循 CC BY-SA 4.0 许可协议

COMPOSER_MEMORY_LIMIT=-1 composer update --ignore-platform-reqs

原文由 Guru 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题