增加内存限制Composer不起作用

时间:2019-09-02 18:51:16

标签: symfony composer-php mamp php-ini memory-limit

我试图在我的Symfony项目中要求该捆绑包:FOSUserBundle。但这不起作用,显然我必须增加memory_limit。但是我无法使其正常工作。

我已经尝试寻找php.ini文件来更改memory_limit。但是我的Symfony项目中没有php.ini文件。为什么不在那里?我忘了安装东西吗?如果我想手动添加它,可以放在哪里? MAMP文件夹中有PHP.INI文件。我试图更改memory_limit的值,没有帮助。

在导航到正确的项目文件夹后,我尝试在终端中运行此命令:php -d memory_limit = 2G composer update。 我得到的反应或多或少是这样的:

Nothing to install or update
Generating autoload files
Incenteev\ParameterHandler\ScriptHandler::buildParameters
Updating the "app/config/parameters.yml" file
Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache

这是我尝试要求捆绑包后收到的错误: 致命错误:在...中耗尽了1610612736字节的允许内存大小(尝试分配4096字节)...

您可能会看到,我是Symfony和Composer的新手。你能帮我吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

有些事情会大有帮助。

  1. 确保您正在运行最新版本的Composer。
  2. 确保您至少运行的是最新版本的PHP-版本7显着提高了内存使用率-有时使使用的内存量减半。 7.2或(更好)7.3版本应为现在(2019年夏季)使用的版本。
  3. 积极限制Composer必须检查才能使用的有效软件包的不同版本的数量。
    • Roave/SecurityAdvisories是一个好的开始。这也将阻止您安装存在已知安全问题的软件包版本。它还将限制有效软件包的搜索空间,从而使Composer可以忽略大量可能的软件包,这意味着它不需要为各种潜在组合保留大量数据。
    • 您可以添加其他版本的软件包,以进一步缩小搜索空间。例如,您可能有许多通配符“ *”版本(也称为“死亡之星版本约束”),这几乎总是一个坏主意。通常,使用“ ^ 3.4”或“ ^ 4.3”形式的版本号会更好-允许从错误修复版本和功能(第3和第2个数字)进行升级,但不能升级通常包含重大更改的主要版本。

答案 1 :(得分:0)

我通过在“ config”部分下的composer.json文件中设置composer_memory_limit来解决此问题:

“ COMPOSER_MEMORY_LIMIT”:“ 2G”