[PHP] Fix lỗi PHP Fatal Error: Allowed Memory Size Exhausted

Fix lỗi PHP Fatal Error: Allowed Memory Size Exhausted


Một trong những lỗi thường xuất hiện khi bạn chạy các mã nguồn website PHP đó là lỗi “PHP Fatal Error: Allowed Memory Size Exhausted“.

Bạn sẽ gặp thông báo lỗi có dạng ví dụ như sau :

Fatal error: Allowed memory size of 268435465 bytes exhausted (tried to allocate 280559520) in Unknown on line 0


Lỗi này nói cho ta biết rằng, các tiến trình ứng dụng PHP đang thực thi lượng dữ liệu lớn tiêu ngốn nhiều tài nguyên RAM bộ nhớ, nhưng bị giới hạn bởi tài nguyên bộ nhớ được phép cấp cho 1 tiến trình PHP thực thi (do ta quy định trong php.ini hoặc trong code/.htaccess thông qua giá trị biến “memory_limit” được lập trình viên/quản trị viên quy định). Tiến trình yêu cầu được cấp thêm bộ nhớ để tiến trình PHP có thể hoạt động ổn định.

Vì vậy khi gặp lỗi này, ta thường có 2 cách :
– Nâng mức giới hạn bộ nhớ cho tiến trình PHP cao hơn. Nâng giá trị “memory_limit“.
– Kiểm tra lại source code website sao PHP tiến trình lại chiếm nhiều bộ nhớ đến vậy (tất nhiên là mức bộ nhớ giới hạn cho tiến trình phải phù hợp)

Nếu bạn không chắc mức giá trị cấu hình PHP memory limit đã set thì bạn có thể nhận biết dựa vào lỗi trả về từ PHP error. Sau đây là danh sách các mức cấu hình memory_limit thường sử dụng tương ứng, từ đây bạn có thể so sánh đối chiếu để nâng mức giá trị cấu hình :

PHP: Fatal Error: Allowed Memory Size of 8388608 Bytes Exhausted - 8 MB
PHP: Fatal Error: Allowed Memory Size of 16777216 Bytes Exhausted - 16 MB
PHP: Fatal Error: Allowed Memory Size of 33554432 Bytes Exhausted - 32 MB
PHP: Fatal Error: Allowed Memory Size of 67108864 Bytes Exhausted - 64 MB
PHP: Fatal Error: Allowed Memory Size of 134217728 Bytes Exhausted - 128 MB
PHP: Fatal Error: Allowed Memory Size of 268435456 Bytes Exhausted - 256 MB
PHP: Fatal Error: Allowed Memory Size of 536870912 Bytes Exhausted - 512 MB
PHP: Fatal Error: Allowed Memory Size of 1073741824 Bytes Exhausted - 1 GB


1. Xác định file php.ini

– Bạn sẽ xác định vị trí file php.ini bằng lệnh command line sau :

# php -i | grep "php.ini"
Loaded Configuration File => /etc/php.ini


2. Tăng giá trị memory_limit

– Giả sử trong ví dụ cấu hình này, giới hạn bộ nhớ là 128M, nhưng vẫn bị báo lỗi là không đủ thì ta sẽ nâng cấp thêm bộ nhớ cho tiến trình PHP trong điều kiện bộ nhớ RAM còn đủ xài.

# vi /etc/php.ini
memory_limit = 128M

thành

memory_limit = 256M


3. Khởi động lại dịch vụ PHP

– Nếu PHP là module Apache thì khởi động lại Apache

# /etc/init.d/httpd restart

– Nếu PHP hoạt động như PHP-FPM.

# /etc/init.d/phpfpm restart


4. Cấu hình giá trị memory_limit bằng .htaccess

– Trong trường hợp bạn không có quyền truy cập chính sửa file php.ini trên hệ thống, thì bạn có thể quy định mức giới hạn bộ nhớ bằng file .htaccess với nội dung như sau.

# vi ./.htaccess
php_value memory_limit 256M


Chúc các bạn thành công.

Previous article[Linux] Tìm hiểu sử dụng chương trình lệnh “at”, “atq”, “atrm”, “batch” trên Linux
Next article[Mail] Kiểm tra sự tồn tại của 1 tài khoản email bằng command line
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !