我需要在我的主机上运行 composer update 所以我使用 ssh 登录并尝试在我安装了 Laravel 和 composer 的 /www 文件夹中运行以下命令:
composer update
我收到此错误:
我正在与我的托管服务提供商联系,他们告诉我运行命令:
php -d memory_limit=512M composer update
我运行了这个命令,但我得到:“无法打开文件:作曲家”
该怎么办?这里的解决方案是什么?
原文由 Andrew 发布,翻译遵循 CC BY-SA 4.0 许可协议
当您运行
composer update
时,操作系统将查看配置的路径并尝试找到具有该名称的可执行文件。运行时
php composer update
,composer
字符串被视为 PHP 的参数,不会在任何路径中搜索。您必须提供完整路径才能运行它。运行
which composer
会告诉你操作系统在哪里找到 composer 可执行文件,然后你只需在 PHP 命令中使用完整路径:请注意,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 的可用内存才能更新所有内容。