使用Composer时Symfony 4内存不足

时间:2019-02-18 18:45:13

标签: php symfony

我正在使用Symfony 4 ...

我运行以下命令:

php -d memory_limit=-1 composer.phar require form

脚本通过这些要点成功运行...

./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Package symfony/lts is abandoned, you should avoid using it. Use     symfony/flex instead.
Generating autoload files
ocramius/package-versions:  Generating version class...
ocramius/package-versions: ...done generating version class
Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 255
!!  
!!   // Clearing the cache for the dev environment with debug                       
!!   // true   

然后我收到此错误:

!!  Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32768 bytes) in /Applications/XAMPP/xamppfiles/htdocs/xxxx/vendor/symfony/var-dumper/Cloner/Data.php on line 306

我可以毫无问题地运行此脚本:

php -d memory_limit=-1 bin/console cache:clear

我不知道该如何解决,因为我的命令说要绕过内存限制。为了解决这个错误,我该怎么办,我现在无法安装任何东西。

2 个答案:

答案 0 :(得分:2)

为整个php进程设置内存限制可能很危险,因为这可能导致在Web上下文中执行PHP时出现内存问题。因此,请确保仅更新CLI的配置。 Composer还通过环境变量COMPOSER_MEMORY_LIMIT提供了一个配置点。如果您始终希望启用它,则可以通过export COMPOSER_MEMORY_LIMIT=-1将其添加到您的.bashrc中;如果只需要一次,则可以在命令本身前面添加它在安装过程中:

COMPOSER_MEMORY_LIMIT=-1 composer require form

您也可以在Composer的Troubleshooting Guide中找到各种不同的方法来解决与内存限制有关的问题。

答案 1 :(得分:1)

Composer执行脚本时,它是Composer的单独 PHP调用,因此您的命令行指令不适用于它。

典型的解决方案是通过PHP的配置文件配置PHP,以便所有实例都受影响。

如果您无权更改PHP配置,最好的选择可能是使用--no-scripts运行composer,然后尝试使用内存限制选项分别运行必要的脚本。