提问者:小点点

PHP作曲家耗尽内存…为什么? 发生什么事了?


尝试初始化PHP/laravel项目(通过运行composer install),我遇到了与这里描述的完全相同的问题:在哪里找到这个client.php laravel

我尝试使用composer require升级与新PHP版本交互不佳的包,并尝试升级有问题的包,但结果不太好:

$ composer require sentry/sentry-laravel:1.8.0
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
PHP Fatal error:  Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/Cellar/composer/1.10.7/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/Cellar/composer/1.10.7/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223

Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.

我在文档中读到了如何增加内存限制,但在我这样做之前,我想了解项目是否有什么问题,以耗尽1536MB内存限制,如果是,如何理解和修复问题? 更具体地说,除了替换composer.json文件中的版本要求之外,这个命令还做什么呢? 如果我只是手动编辑composer.json文件以更新所需的版本,会出现什么问题--版本会与检测到的其他依赖项冲突吗?


共2个答案

匿名用户

更具体地说,除了替换composer.json文件中的版本要求之外,这个命令还做什么呢?

它还尝试安装新版本的依赖项,要做到这一点,它需要检查这是否可能(新版本与其他依赖项没有冲突)以及还需要做什么(安装/升级子依赖项)。 在实际应用中,它意味着完全重建依赖树,这是一个复杂的过程,需要大量的内存。

手动编辑composer.json不会给您任何东西,因为它不会安装这个依赖项。 您仍然需要运行composer update来执行此操作,这将需要重建依赖关系树,并导致与require命令相同的内存问题。

匿名用户

尝试删除供应商文件,然后继续安装composer