Magento 2允许的内存耗尽错误编译代码


28

添加模块时出现错误。

请重新运行Magento编译命令

所以我在命令下运行,但在从根目录运行命令时也显示以下错误,

php magento设置:di:compile

Compilation was started.
%message% 0/7 [>---------------------------]   0% 1 sec 37.0 MiB%message% 0/7 [>
---------------------------]   0% 1 sec 37.0 MiBProxies code generation... 0/7 [
>---------------------------]   0% 1 sec 37.0 MiB
Proxies code generation... 1/7 [====>-----------------------]  14% 47 secs 43.5
MiB
Repositories code generation... 1/7 [====>-----------------------]  14% 47 secs
43.5 MiB
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate
 24 bytes) in D:\xampp\htdocs\linsenwelt\vendor\zendframework\zend-code\src\Scan
ner\FileScanner.php on line 36

怎么修 ?


我在实时服务器中遇到相同的错误
SIBHI S

Answers:


72

Magento 2命令中的内存限制快速解决方案是直接在命令内部添加内存限制。

对于编译命令,

php -dmemory_limit=5G bin/magento setup:di:compile

部署

php -dmemory_limit=5G bin/magento setup:static-content:deploy

如果问题仍未解决,您可以按照5G更改为最大值。


1
谢谢@rakesh,这节省了我的时间,再次非常感谢您
Nagaraju K 17-10-13

1
请注意,增加内存限制只能是一个临时解决方案。
Macas

8

看来您的cli仅分配了128MB的内存。如果可以,请将该值增加到至少256MB或512MB。


我为php.ini文件尝试了512mb大小,但仍然无法正常工作...如何解决?
Khushbu Mehta

如果仍然可以,Allowed memory size of 134217728 bytes那么您就不会增加cli的内存限制。
马里乌斯

我在哪个文件中设置内存限制?
库什布·梅塔

8

用这种“肮脏”的方式

php -dmemory_limit=-1 bin/magento setup:di:compile


5

如果您使用的是PHP> = 5.3.0,并且使用了Magento 2.1.x及更高版本,则在运行后composer install,将在根目录和pub目录中创建两个文件.user.ini

编辑这些文件以覆盖您的PHP.ini设置,在这种情况下, memory_limit

; Set PHP memory limit to 768M which already enough for compilation tasks
memory_limit = 768M
max_execution_time = 18000

如果您使用的是Apache,则只需要关心根目录中的文件,/pub如果使用engineX(nginx),则不需要关心文件,反之亦然

希望能帮助到你。


3

您需要增加分配给php的内存。要增加内存,请执行命令php --ini。查找加载了php.ini。应该像

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/05-opcache.ini,

转到当前加载的php.ini(/etc/php5/cli/php.ini)并查找memory_limit参数。将memory_limit参数的值增加为256M或512M。


3

这种情况可能很难调试,因为如果您只是想

php -r "echo ini_get('memory_limit').PHP_EOL;"

它显示了路径中PHP的内存限制,这可能很好。但是magento脚本(bin / magento)使用了序言

#!/usr/bin/env php

因此不一定从您的路径使用PHP!跟踪php.ini正在使用的文件的一种方法是编写一个小的脚本,如下所示:

#!/usr/bin/env php
<?php
phpinfo();

调用它getinfo(不是getinfo.php!),使其可执行,然后像这样运行它:

./getinfo  | grep php.ini

这将显示您需要更改的ini文件。在该文件中,将memory_limit其他帖子中建议的配置值更改为大于128M的值。然后保存文件并检查您的工作:

./getinfo  | grep memory_limit

2

我遇到了类似的问题,php ini文件中的内存限制增加到2Gb,phpinfo()文件显示它设置为2Gb。Magento似乎在某处手动设置了内存限制。我增加了文件bin / magento中的内存限制。在第一行中,我这样:

ini_set('memory_limit', '656M');

这使它起作用。


2

我有问题的解决方案。对于内存耗尽错误,我们必须为编译代码添加内存限制。

php -dmemory_limit=4G bin/magento setup:di:compile

希望以后能对某人有所帮助。


0

在下面使用以下行 php/bin magento -d memory_limit=5G s:d:c 作为您的编译代码。这是由于php允许的内存限制。但是在命令中允许了内存限制之后,这将消除错误,并且编译和其他命令将运行而不会出现任何错误。只需
-d memory_limit=5G 在上面的示例中看到的每个命令中添加它。如果您认为我的回答有用,请支持。


0

使用“ -d memory_limit = 5G”进行编译不是明智的决定。这是一个临时解决方案,在模式切换过程中(即从开发人员到生产人员)可能会受到影响。这次系统在没有此逻辑“ -d memory_limit = 5G”的情况下编译了代码,从而引发错误。

在此阶段修复此错误是一个更好的选择。要解决此问题,请打开php.ini并将memory_limit增加1024M,然后执行编译命令php bin / magento setup:di:compile

检查以下内容:https : //getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors

这次应该可以了


0

如果您在Cli中遇到此问题,请执行以下命令

php -dmemory_limit = 8G bin / magento设置:升级


0

对于M2,使用以下命令通过ssh添加内存限制。

用于编译命令:php -dmemory_limit=5G bin/magento setup:di:compile 用于部署命令: php -dmemory_limit=5G bin/magento setup:static-content:deploy

如果问题没有解决,您可以增加5G的价值。


0

67

Magento 2命令中的内存限制快速解决方案是直接在命令内部添加内存限制。

对于编译命令,

php -dmemory_limit = 5G bin / magento setup:di:编译部署

php -dmemory_limit = 5G bin / magento setup:static-content:deploy如果问题无法解决,则可以按照5G的最大值进行更改。

它真正的工作:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.