作曲家更新内存限制

2022-08-30 06:50:58

我需要在我的主机上运行作曲家更新,所以我使用ssh登录并尝试在/www文件夹中运行以下命令,在那里我有Laravel和作曲家安装:

composer update

我收到此错误:

enter image description here

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

php -d memory_limit=512M composer update

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

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


答案 1

将其设置为使用尽可能多的内存:

COMPOSER_MEMORY_LIMIT=-1 composer update

答案 2

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

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

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

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

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

请注意,512MB 可能太少。我的感觉是,它很乐意花费1GB或更多,具体取决于您使用的依赖项的数量以及理论上允许的版本种类,即如果您允许 Symfony ,那么与使用相比,您可以使Composer处理更多可能的版本。~2.3~2.7

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

更新

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

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


推荐