Bộ nhớ cho phép Magento 2 cạn kiệt khi biên dịch mã


28

Tôi có lỗi khi tôi thêm mô-đun ..

Vui lòng chạy lại lệnh biên dịch Magento

Vì vậy, tôi chạy lệnh bên dưới nhưng cũng hiển thị lỗi mà bên dưới khi chạy lệnh từ root,

Thiết lập php magento: di: biên dịch

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

Làm thế nào để khắc phục ?


Tôi đang gặp lỗi tương tự trong máy chủ trực tiếp
SIBHI S

Câu trả lời:


71

Một giải pháp nhanh chóng cho giới hạn bộ nhớ trong lệnh Magento 2 là trực tiếp thêm giới hạn bộ nhớ bên trong lệnh.

Đối với lệnh Biên dịch,

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

Để triển khai

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

Bạn có thể thay đổi theo 5G thành tối đa nếu vấn đề không được giải quyết.


1
cảm ơn @rakesh nó tiết kiệm thời gian của tôi cảm ơn bạn rất nhiều lần nữa
Nagaraju K

1
Hãy cẩn thận, tăng giới hạn bộ nhớ có thể chỉ là một giải pháp tạm thời.
Macas

8

Có vẻ như cli của bạn chỉ có 128 MB bộ nhớ được phân bổ. Tăng giá trị lên ít nhất 256MB hoặc 512MB nếu bạn có thể.


Tôi đã thử kích thước 512mb cho tệp php.ini của mình nhưng vẫn không hoạt động ... giải quyết thế nào?
Khushbu Mehta

Nếu bạn vẫn nhận được Allowed memory size of 134217728 bytesthì bạn đã không tăng giới hạn bộ nhớ cho cli.
Marius

Trong tập tin nào tôi đặt giới hạn bộ nhớ ??
Khushbu Mehta

8

sử dụng cách 'bẩn' này

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


5

Nếu bạn đang sử dụng PHP> = 5.3.0 và bạn đã sử dụng Magento 2.1.x trở lên, thì sau khi bạn chạy composer install, hai tệp sẽ được tạo trong thư mục gốc và thư mục pub của bạn có tên.user.ini

Chỉnh sửa các tệp đó để ghi đè cài đặt PHP.ini của bạn, trong trường hợp này là memory_limit

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

Nếu bạn đang sử dụng Apache, bạn sẽ chỉ cần quan tâm đến các tệp trong thư mục gốc chứ không phải /pubmột và ngược lại nếu bạn đang sử dụng engineX (nginx)

Hy vọng nó giúp.


3

Bạn cần tăng bộ nhớ được phân bổ cho php. Để tăng bộ nhớ, thực hiện lệnh php --ini. Tìm nạp php.ini. Nó nên như thế

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,

Chuyển đến php.ini đã tải hiện tại (/etc/php5/cli/php.ini) và tìm tham số memory_limit. Tăng giá trị so với tham số memory_limit lên 256M hoặc 512M.


3

Tình huống này có thể khó gỡ lỗi vì nếu bạn chỉ

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

nó hiển thị giới hạn bộ nhớ cho PHP trong đường dẫn của bạn, điều này có thể ổn. Nhưng tập lệnh magento (bin / magento) sử dụng phần mở đầu

#!/usr/bin/env php

vì vậy nó không nhất thiết phải sử dụng PHP từ đường dẫn của bạn! Một cách để theo dõi php.initập tin đang được sử dụng là viết một tập lệnh nhỏ như thế này:

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

gọi nó getinfo(không phải getinfo.php!), làm cho nó thực thi được, sau đó chạy nó như thế này:

./getinfo  | grep php.ini

Điều này sẽ cho bạn thấy tập tin ini bạn cần thay đổi. Trong tệp đó, thay đổi giá trị cấu hình memory_limitnhư được đề xuất trong các bài đăng khác, thành giá trị cao hơn 128M. Sau đó lưu tệp và kiểm tra công việc của bạn:

./getinfo  | grep memory_limit

2

Tôi gặp vấn đề tương tự, giới hạn bộ nhớ đã tăng lên 2Gb bên trong tệp php ini, tệp phpinfo () cho thấy nó được đặt thành 2Gb. Có vẻ như Magento đặt giới hạn bộ nhớ theo cách thủ công ở đâu đó. Tôi tăng giới hạn bộ nhớ trong tập tin bin / magento. Trong dòng đầu tiên tôi đặt điều này:

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

mà làm cho nó hoạt động.


2

Tôi đã có giải pháp cho câu hỏi của tôi. Đối với lỗi hết bộ nhớ, chúng ta phải thêm giới hạn bộ nhớ cho mã biên dịch.

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

Hy vọng nó sẽ giúp được ai đó trong tương lai.


0

Sử dụng dòng sau đây php/bin magento -d memory_limit=5G s:d:c cho mã biên dịch của bạn. Điều này là do giới hạn bộ nhớ cho phép đối với php. Nhưng sau khi cho phép giới hạn bộ nhớ trong lệnh, điều này sẽ loại bỏ lỗi và quá trình biên dịch của bạn và các lệnh khác sẽ chạy mà không có bất kỳ lỗi nào. Chỉ cần thêm điều này
-d memory_limit=5G trong mỗi lệnh như bạn đã thấy trong ví dụ trên. Upvote nếu bạn thấy câu trả lời của tôi hữu ích.


0

Biên dịch bằng cách sử dụng "-d memory_limit = 5G" không phải là một quyết định sáng suốt. Đó là một giải pháp tạm thời có thể bị ảnh hưởng trong quá trình Chuyển đổi chế độ tức là từ Nhà phát triển sang Sản xuất. Lần này hệ thống biên dịch mã mà không có logic này "-d memory_limit = 5G" sẽ đưa ra lỗi.

Đây là một lựa chọn tốt hơn để khắc phục lỗi này ở giai đoạn này. Để khắc phục điều này, hãy mở php.ini và tăng memory_limit thêm 1024M và thực hiện lệnh biên dịch php bin / magento setup: di: compile

Kiểm tra điều này: https://getcomposer.org/doc/articles/troubledh Boot.md#memory-limit-errors

Lần này nó nên hoạt động


0

Nếu bạn đang phải đối mặt với vấn đề này trong Cli, vui lòng khay Lệnh này

php -dmemory_limit = 8G thiết lập bin / magento: nâng cấp


0

cho M2 thêm giới hạn bộ nhớ thông qua ssh với lệnh bên dưới.

cho lệnh biên dịch: php -dmemory_limit=5G bin/magento setup:di:compile cho lệnh triển khai: php -dmemory_limit=5G bin/magento setup:static-content:deploy

bạn có thể tăng giá trị 5G nếu vấn đề không được giải quyết.


0

67

Một giải pháp nhanh chóng cho giới hạn bộ nhớ trong lệnh Magento 2 là trực tiếp thêm giới hạn bộ nhớ bên trong lệnh.

Đối với lệnh Biên dịch,

php -dmemory_limit = 5G thiết lập bin / magento: di: biên dịch để triển khai

php -dmemory_limit = 5G bin / magento setup: static-content: triển khai Bạn có thể thay đổi theo 5G thành tối đa nếu vấn đề không được giải quyết.

nó thực sự hoạt động :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.