เพิ่ม Memory Limit ใน WordPress
เมื่อเว็บ WordPress ขึ้นข้อความ Fatal error: Allowed memory size of 134217728 bytes exhausted หรือหน้าจอ Critical Error ระหว่างอัปโหลดรูป นำเข้าสินค้า WooCommerce หรือเปิดหน้าแก้ไขด้วย Page Builder แปลว่า PHP ใช้หน่วยความจำเกินเพดานที่กำหนดไว้ ตัวเลข 134217728 คือจำนวนไบต์ของเพดาน ซึ่งเท่ากับ 128 MB
หน่วยความจำของ WordPress ถูกควบคุม 2 ชั้น คือค่า memory_limit ของ PHP และค่าคงที่ของ WordPress เอง บทความนี้อธิบายว่าแต่ละชั้นทำงานอย่างไร ควรปรับที่ใดตามประเภทเซิร์ฟเวอร์ และควรตั้งเท่าไหร่จึงไม่กระทบเครื่อง
สิ่งที่ต้องเตรียม
- สิทธิ์แก้ไขไฟล์
wp-config.php - สำหรับ Cloud Server หรือ VPS ที่ดูแลเอง: สิทธิ์ SSH และ sudo เพื่อแก้
php.ini - สำหรับ Web Hosting: สิทธิ์เข้า Plesk หรือ DirectAdmin
- สำเนาไฟล์ที่จะแก้ไขก่อนเริ่ม
ทำความเข้าใจค่าหน่วยความจำ 3 ค่า
| ค่า | กำหนดที่ | ค่าเริ่มต้น | ใช้กับ |
|---|---|---|---|
memory_limit | php.ini หรือแผงควบคุม | ขึ้นกับเซิร์ฟเวอร์ (PHP ตั้งมา 128M) | ทุกสคริปต์ PHP |
WP_MEMORY_LIMIT | wp-config.php | 40M (Multisite 64M) | หน้าเว็บฝั่งผู้เข้าชม |
WP_MAX_MEMORY_LIMIT | wp-config.php | 256M | หน้าหลังบ้านและงานหนัก เช่น แก้ไขรูปภาพ |
WordPress จะเพิ่มค่า memory_limit ให้เองขณะทำงาน หากค่าคงที่ของ WordPress สูงกว่าค่าของ PHP แต่จะไม่ลดลงหากค่าของ PHP สูงอยู่แล้ว การเพิ่มนี้ทำได้เฉพาะเมื่อเซิร์ฟเวอร์ไม่ได้ล็อกค่าไว้ ซึ่งบนโฮสติ้งบางแห่งถูกล็อกด้วย php_admin_value ในกรณีนั้นแก้แค่ wp-config.php จะไม่มีผล ต้องแก้ที่ระดับ PHP
ขั้นตอนที่ 1: ดูค่าปัจจุบัน
ไปที่ Tools > Site Health > Info แล้วเปิดหัวข้อ
- Server ดูบรรทัด PHP memory limit
- WordPress Constants ดูบรรทัด WP_MEMORY_LIMIT และ WP_MAX_MEMORY_LIMIT
หรือใช้ WP-CLI (ค่าที่ได้เป็นของ PHP CLI ซึ่งอาจต่างจากเว็บ ให้ถือหน้า Site Health เป็นหลัก)
wp eval 'echo WP_MEMORY_LIMIT . " / " . WP_MAX_MEMORY_LIMIT . " / " . ini_get("memory_limit") . PHP_EOL;'
ขั้นตอนที่ 2: เพิ่มค่าใน wp-config.php
เปิด wp-config.php แล้วเพิ่มก่อนบรรทัด /* That's all, stop editing! Happy publishing. */
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
ใช้ตัวอักษร M ตัวใหญ่ติดกับตัวเลข ไม่เว้นวรรค และไม่เขียน MB ต้องวางไว้ก่อนบรรทัด require_once ABSPATH . 'wp-settings.php'; มิฉะนั้นค่าจะไม่มีผล เพราะ WordPress ใช้ค่าไปแล้ว บันทึกไฟล์แล้วดู Site Health อีกครั้ง หากค่า PHP memory limit ยังไม่เปลี่ยน แปลว่าเซิร์ฟเวอร์ล็อกค่าไว้ ให้ทำขั้นตอนที่ 3
ขั้นตอนที่ 3: เพิ่ม memory_limit ของ PHP
บน Plesk
ไปที่ Websites & Domains เลือกโดเมน แล้วเข้า PHP (บางเวอร์ชันชื่อ PHP Settings) แก้ช่อง memory_limit แล้วคลิก OK หรือ Apply ดูรายละเอียดที่ ปรับค่า PHP (memory_limit, max_execution_time) บน Plesk
บน DirectAdmin
ขึ้นกับการตั้งค่าของเซิร์ฟเวอร์ หากเซิร์ฟเวอร์ใช้ CloudLinux จะมีเมนู Select PHP version ให้เปิดแท็บ Options แล้วแก้ memory_limit หากไม่มีเมนูนี้ ให้ลองวิธีไฟล์ .user.ini ด้านล่าง หรือแจ้งผู้ดูแลเซิร์ฟเวอร์
ด้วยไฟล์ .user.ini (PHP-FPM)
สร้างไฟล์ .user.ini ในโฟลเดอร์รากของเว็บ (โฟลเดอร์เดียวกับ wp-config.php)
memory_limit = 256M
PHP อ่านไฟล์นี้ใหม่ทุก 300 วินาทีตามค่า user_ini.cache_ttl จึงอาจต้องรอประมาณ 5 นาทีจึงเห็นผล วิธีนี้ใช้กับ PHP-FPM และ CGI เท่านั้น
ด้วย .htaccess (เฉพาะ Apache mod_php)
php_value memory_limit 256M
ใช้เฉพาะเมื่อ PHP ทำงานเป็นโมดูลของ Apache หากเซิร์ฟเวอร์ใช้ PHP-FPM คำสั่งนี้จะทำให้เว็บขึ้น 500 Internal Server Error ทันที ให้ลบออกหากเกิดขึ้น
บน Cloud Server ที่ดูแลเอง
หาไฟล์ php.ini ที่ PHP-FPM ใช้
# Ubuntu (เปลี่ยน 8.3 ตามเวอร์ชันในเครื่อง)
sudo nano /etc/php/8.3/fpm/php.ini
# AlmaLinux / Rocky Linux
sudo nano /etc/php.ini
ค้นหาบรรทัด memory_limit แก้เป็น memory_limit = 256M แล้วรีสตาร์ต PHP-FPM
# Ubuntu
sudo systemctl restart php8.3-fpm
# AlmaLinux / Rocky Linux
sudo systemctl restart php-fpm
บน AlmaLinux/Rocky ให้ตรวจไฟล์ Pool /etc/php-fpm.d/www.conf ด้วย หากมีบรรทัด php_admin_value[memory_limit] ค่านั้นจะมีผลเหนือ php.ini และ WordPress จะเปลี่ยนค่าไม่ได้
ควรตั้งเท่าไหร่
| ประเภทเว็บ | ค่าที่มักเพียงพอ |
|---|---|
| เว็บบริษัท บล็อก ปลั๊กอินไม่มาก | 128M-256M |
| WooCommerce, Page Builder, ปลั๊กอินจำนวนมาก | 256M-512M |
| งานนำเข้าข้อมูลจำนวนมาก (ชั่วคราว) | 512M ขึ้นไป แล้วลดกลับหลังเสร็จ |
ค่านี้คือเพดานต่อคำขอหนึ่งคำขอ ไม่ใช่หน่วยความจำที่ถูกจองไว้ แต่ในช่วงที่มีผู้เข้าชมพร้อมกันมาก หลาย Process อาจใช้ถึงเพดานพร้อมกัน หากตั้ง 512M และ PHP-FPM เปิด pm.max_children ไว้ 20 เครื่องอาจต้องการหน่วยความจำสูงถึงประมาณ 10 GB ในกรณีเลวร้าย เครื่องที่ RAM ไม่พอจะเริ่มใช้ Swap และช้าลงมาก ตรวจการใช้ RAM ได้ที่ ตรวจสอบ CPU, RAM และ Load Average ของ Linux Server
หมายเหตุ: ถ้าเพิ่มเป็น 512M แล้วยังไม่พอ ปัญหามักไม่ใช่เพดานที่ต่ำเกินไป แต่เป็นปลั๊กอินที่มีจุดรั่วของหน่วยความจำหรือโหลดข้อมูลทั้งตารางมาในครั้งเดียว ให้ดู Path ในข้อความ Error ว่าชี้ไปที่ปลั๊กอินใด ตามวิธีใน แก้ปัญหา "There has been a critical error" ใน WordPress ด้วย WP_DEBUG
ตรวจสอบผลลัพธ์
- เปิด Tools > Site Health > Info ค่า PHP memory limit และ WP_MEMORY_LIMIT ต้องเป็นค่าใหม่
- ทำงานที่เคย Error ซ้ำ เช่น อัปโหลดรูปหรือเปิด Page Builder ต้องไม่มีข้อความ Allowed memory size อีก
- ดู Error Log ว่าไม่มีบรรทัด
Allowed memory sizeใหม่
ปัญหาที่พบบ่อย
แก้ wp-config.php แล้ว Site Health ยังแสดงค่าเดิม
บรรทัด define อยู่หลัง require_once ABSPATH . 'wp-settings.php'; หรือเซิร์ฟเวอร์ล็อกค่าไว้ ให้ย้ายบรรทัดขึ้นไปด้านบน หรือแก้ที่ระดับ PHP ตามขั้นตอนที่ 3
แก้ php.ini แล้วไม่มีผล
อาจแก้ไฟล์ผิดตัว เช่น แก้ /etc/php/8.3/cli/php.ini ซึ่งใช้กับ Command Line เท่านั้น หรือเว็บใช้ PHP คนละเวอร์ชัน ตรวจด้วยการดูบรรทัด Loaded Configuration File จาก phpinfo() และอย่าลืมรีสตาร์ต PHP-FPM
เว็บขึ้น 500 ทันทีหลังแก้
มักเกิดจากใส่ php_value ใน .htaccess บนเซิร์ฟเวอร์ที่ใช้ PHP-FPM หรือพิมพ์ผิดใน wp-config.php ให้ย้อนไฟล์จากสำเนาแล้วลองวิธีอื่น
หากทำตามขั้นตอนแล้วยังติดปัญหา สามารถติดต่อทีมสนับสนุนของ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


