Magento 2 Diizinkan Memori kehabisan kesalahan saat menyusun kode

28

Saya memiliki kesalahan ketika saya menambahkan modul ..

Silakan jalankan kembali perintah kompilasi Magento

jadi saya menjalankan perintah di bawah ini tetapi juga menampilkan kesalahan di bawah ini ketika menjalankan perintah dari root,

setup 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

Bagaimana cara memperbaiki ?

Khushbu Mehta
sumber
Saya mendapatkan kesalahan yang sama di server langsung
SIBHI S

Jawaban:

72

Solusi cepat untuk batas memori dalam perintah Magento 2 secara langsung menambahkan batas memori di dalam perintah.

Untuk perintah Kompilasi,

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

Untuk Penempatan

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

Anda dapat mengubah sesuai 5G ke maksimal jika masalah tidak menyelesaikan.

Rakesh Jesadiya
sumber
1
terima kasih @rakesh menghemat waktu saya, terima kasih banyak sekali lagi
Nagaraju K
1
Hati-hati, meningkatkan batas memori hanya bisa menjadi solusi sementara.
Macas
8

Sepertinya klien Anda hanya memiliki 128 MB memori yang dialokasikan. Tingkatkan nilainya menjadi setidaknya 256MB atau 512MB jika Anda bisa.

Marius
sumber
Saya mencoba ukuran 512mb untuk file php.ini saya tetapi masih tidak berfungsi ... bagaimana menyelesaikannya?
Khushbu Mehta
Jika Anda masih mendapatkan Allowed memory size of 134217728 bytesmaka Anda tidak menambah batas memori untuk cli.
Marius
Di file mana saya menetapkan batas memori ??
Khushbu Mehta
8

gunakan cara 'kotor' ini

php -dmemory_limit=-1 bin/magento setup:di:compile
Ansyori
sumber
6
php -dmemory_limit=6G bin/magento setup:di:compile
Sheshgiri Anvekar
sumber
5

Jika Anda menggunakan PHP> = 5.3.0 dan Anda menggunakan Magento 2.1.x dan di atasnya, maka setelah Anda jalankan composer install, dua file akan dibuat di direktori root Anda dan direktori pub Anda dinamai.user.ini

Edit file-file itu untuk mengganti pengaturan PHP.ini Anda, dalam hal ini adalah memory_limit

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

Jika Anda menggunakan Apache, Anda harus merawat file di dalam direktori root saja, bukan yang /pubsatu dan sebaliknya jika Anda menggunakan engineX (nginx)

Semoga ini bisa membantu.

Toan Nguyen
sumber
3

Anda perlu menambah memori yang dialokasikan ke php. Untuk menambah memori, jalankan perintah php --ini. Findout memuat php.ini. Itu harus seperti

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,

Buka php.ini yang dimuat saat ini (/etc/php5/cli/php.ini) dan temukan parameter memory_limit. Tingkatkan nilai terhadap parameter memory_limit menjadi 256M atau 512M.

Amit Sachan
sumber
3

Situasi ini bisa sulit untuk di-debug karena jika Anda mau

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

ini menunjukkan batas memori untuk PHP di jalur Anda, yang mungkin baik-baik saja. Tetapi skrip magento (bin / magento) menggunakan pembukaan

#!/usr/bin/env php

jadi belum tentu menggunakan PHP dari jalur Anda! Salah satu cara untuk melacak php.inifile yang sedang digunakan adalah dengan menulis skrip kecil seperti ini:

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

sebut saja getinfo(bukan getinfo.php!), buat itu bisa dieksekusi, lalu jalankan seperti ini:

./getinfo  | grep php.ini

Ini akan menunjukkan kepada Anda file ini yang perlu Anda ubah. Dalam file itu, ubah nilai konfigurasi memory_limitseperti yang disarankan dalam posting lain, ke nilai yang lebih tinggi dari 128 juta. Kemudian simpan file dan periksa pekerjaan Anda:

./getinfo  | grep memory_limit
Scott C Wilson
sumber
2

Saya mengalami masalah yang sama, batas memori ditingkatkan menjadi 2Gb di dalam file php ini, file phpinfo () menunjukkan itu diatur ke 2Gb. Tampaknya Magento menetapkan batas memori secara manual di suatu tempat. Saya meningkatkan batas memori di dalam file bin / magento. Di baris pertama saya letakkan ini:

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

yang membuatnya bekerja.

JohnyFree
sumber
2

Saya punya solusi untuk pertanyaan saya. Untuk kesalahan kehabisan memori, kita harus menambahkan batas memori untuk kode kompilasi.

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

Semoga itu akan membantu seseorang di masa depan.

Khushbu Mehta
sumber
0

Pengguna baris berikut setelahnya php/bin magento -d memory_limit=5G s:d:c untuk kode kompilasi Anda. Ini karena batas memori yang diizinkan untuk php. Tetapi setelah mengizinkan batas memori dalam perintah ini akan menghapus kesalahan dan kompilasi Anda dan perintah lainnya akan berjalan tanpa kesalahan. Tambahkan saja ini
-d memory_limit=5G di setiap perintah seperti yang Anda lihat pada contoh di atas. Suara positif jika Anda menemukan jawaban saya berguna.

Rakesh Kumar
sumber
0

Kompilasi menggunakan "-d memory_limit = 5G" bukanlah keputusan yang bijak. Ini adalah solusi sementara yang mungkin terpengaruh selama proses Mode Switching yaitu dari Pengembang ke Produksi. Kali ini sistem mengkompilasi kode tanpa logika ini "-d memory_limit = 5G" yang melempar kesalahan.

Ini adalah opsi yang lebih baik untuk memperbaiki kesalahan ini pada tahap ini. Untuk memperbaikinya, buka php.ini dan tambah memory_limit sebesar 1024M dan jalankan perintah kompilasi setup php bin / magento: di: compile

Periksa ini: https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors

Kali ini seharusnya bekerja

zuber bandi
sumber
0

Jika Anda Menghadapi Masalah Ini di Cli, mohon gunakan Perintah Ini

php -dmemory_limit = Pengaturan 8G / magento: peningkatan

hirokapuriya
sumber
0

untuk M2 tambahkan batas memori melalui ssh dengan perintah di bawah ini.

untuk perintah kompilasi: php -dmemory_limit=5G bin/magento setup:di:compile untuk perintah penyebaran: php -dmemory_limit=5G bin/magento setup:static-content:deploy

Anda dapat meningkatkan nilai 5G jika masalah tidak terpecahkan.

Anas Mansuri
sumber
0

67

Solusi cepat untuk batas memori dalam perintah Magento 2 secara langsung menambahkan batas memori di dalam perintah.

Untuk perintah Kompilasi,

php -dmemory_limit = 5G pengaturan bin / magento: di: compile For Deployment

php -dmemory_limit = 5G pengaturan bin / magento: static-content: deploy Anda dapat mengubah sesuai 5G menjadi maksimal jika masalah tidak terselesaikan.

ini benar-benar bekerja :)

Alauddin Forhad
sumber