เพิ่มขนาดไฟล์อัปโหลดสูงสุดใน WordPress
เมื่ออัปโหลดไฟล์ขนาดใหญ่ใน WordPress เช่น วิดีโอ ไฟล์ PDF ธีม หรือไฟล์สำรองของปลั๊กอินย้ายเว็บ อาจเจอข้อความ The uploaded file exceeds the upload_max_filesize directive in php.ini หรือ exceeds the maximum upload size for this site ขนาดสูงสุดนี้ไม่ได้กำหนดโดย WordPress เอง แต่มาจากค่าของ PHP และบางครั้งจาก Web Server ด้วย
ค่าที่เกี่ยวข้องมีดังนี้ และต้องปรับให้สัมพันธ์กัน
| ค่า | ความหมาย | ตัวอย่าง |
|---|---|---|
upload_max_filesize | ขนาดสูงสุดของไฟล์หนึ่งไฟล์ | 128M |
post_max_size | ขนาดสูงสุดของข้อมูลทั้งคำขอ ต้องมากกว่าหรือเท่ากับ upload_max_filesize | 136M |
memory_limit | หน่วยความจำที่สคริปต์ PHP ใช้ได้ ควรมากกว่า post_max_size | 256M |
max_execution_time และ max_input_time | เวลาสูงสุดที่ใช้ประมวลผลและรับข้อมูล (วินาที) | 300 |
client_max_body_size (Nginx) | ขนาดคำขอที่ Nginx ยอมรับ ค่าเริ่มต้นคือ 1m | 136m |
สิ่งที่ต้องเตรียม
- สิทธิ์เข้าสู่ระบบ Plesk หรือ DirectAdmin สำหรับ Web Hosting หรือสิทธิ์ root/sudo สำหรับ Cloud Server
- ทราบขนาดไฟล์ที่ต้องการอัปโหลด ไม่ควรตั้งค่าสูงเกินความจำเป็น
- สำรองไฟล์การตั้งค่าก่อนแก้ไข หากแก้ไฟล์ด้วยตนเอง
ขั้นตอนที่ 1: ดูค่าปัจจุบัน
ใน WordPress ไปที่ Tools > Site Health แล้วเลือกแท็บ Info เปิดหัวข้อ Media Handling จะเห็น Max size of an uploaded file และ Max effective file size หรือดูแบบรวดเร็วที่ Media > Add New Media File ซึ่งแสดง Maximum upload file size ใต้พื้นที่อัปโหลด
ขั้นตอนที่ 2 (Plesk): ปรับใน PHP Settings
- เข้าสู่ระบบ Plesk แล้วไปที่ Websites & Domains
- ที่โดเมนที่ต้องการ คลิก PHP (ในบางเวอร์ชันของ Plesk ใช้ชื่อ PHP Settings)
- ในส่วนการตั้งค่าด้านล่าง แก้ค่า
memory_limit,max_execution_time,max_input_time,post_max_sizeและupload_max_filesizeสามารถเลือกค่าจากรายการหรือพิมพ์ค่าเองได้ - คลิก OK หรือ Apply
ถ้าบางค่าแก้ไขไม่ได้ แสดงว่าผู้ดูแลระบบจำกัดไว้ใน Service Plan ให้ติดต่อผู้ดูแล สำหรับเว็บบน Plesk ที่ใช้ nginx นำหน้า Apache ตัว nginx มีค่า client_max_body_size ของตัวเอง (ค่าเริ่มต้นของ Plesk โดยทั่วไปคือ 128m) หากไฟล์ใหญ่กว่านั้นแล้วเจอ Error 413 ให้ไปที่ Apache & nginx Settings ของโดเมน (บางเวอร์ชันแสดงเป็น Apache & nginx ใต้ Hosting & DNS) แล้วเพิ่มในช่อง Additional nginx directives เช่น client_max_body_size 136m; หากไม่มีสิทธิ์แก้ไข ให้ติดต่อผู้ดูแลระบบ
ขั้นตอนที่ 2 (DirectAdmin): ใช้เมนูที่ระบบมีให้
วิธีบน DirectAdmin ขึ้นกับการติดตั้งของแต่ละเซิร์ฟเวอร์
- ถ้าเซิร์ฟเวอร์ใช้ CloudLinux จะมีเมนู Select PHP Version (PHP Selector) ใน Evolution skin ภายใต้หมวด Extra Features หรือ Advanced Features ตามการจัดเมนูของเซิร์ฟเวอร์ ให้เลือกแท็บ Options แล้วแก้ค่าที่ต้องการ
- ถ้าไม่มีเมนูดังกล่าวแต่ PHP ทำงานแบบ PHP-FPM ให้ใช้ไฟล์
.user.iniตามขั้นตอนที่ 2 (ทางเลือก) ด้านล่าง - ผู้ดูแลระบบที่มีสิทธิ์ Admin สามารถกำหนดค่าเฉพาะโดเมนได้จาก Custom HTTPD Configurations ในส่วน PHP-FPM
ขั้นตอนที่ 2 (ทางเลือก): ใช้ไฟล์ .user.ini
สำหรับ PHP ที่ทำงานแบบ PHP-FPM หรือ FastCGI สร้างไฟล์ชื่อ .user.ini ในโฟลเดอร์หลักของเว็บ (ที่เดียวกับ wp-config.php)
upload_max_filesize = 128M
post_max_size = 136M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300
PHP จะอ่านไฟล์นี้ใหม่ตามรอบ user_ini.cache_ttl ซึ่งค่าเริ่มต้นคือ 300 วินาที จึงอาจต้องรอประมาณ 5 นาที ค่า php_value ในไฟล์ .htaccess ใช้ได้เฉพาะเมื่อ PHP ทำงานเป็นโมดูลของ Apache (mod_php) เท่านั้น ถ้าใช้กับ PHP-FPM จะทำให้เกิด Error 500
ขั้นตอนที่ 2 (Cloud Server): แก้ php.ini ของ PHP-FPM
หาไฟล์ php.ini ที่ PHP-FPM ใช้จริง ไฟล์นี้ไม่ใช่ไฟล์เดียวกับที่คำสั่ง php --ini แสดง เพราะคำสั่งนั้นแสดงของ CLI บน Ubuntu ไฟล์อยู่ที่ /etc/php/เวอร์ชัน/fpm/php.ini ดูเวอร์ชันที่ติดตั้งด้วย
ls /etc/php/
ตัวอย่างสำหรับ PHP 8.3 บน Ubuntu 24.04
sudo cp /etc/php/8.3/fpm/php.ini /etc/php/8.3/fpm/php.ini.bak
sudo sed -i -e 's/^upload_max_filesize = .*/upload_max_filesize = 128M/' \
-e 's/^post_max_size = .*/post_max_size = 136M/' \
-e 's/^memory_limit = .*/memory_limit = 256M/' \
-e 's/^max_execution_time = .*/max_execution_time = 300/' \
/etc/php/8.3/fpm/php.ini
sudo systemctl restart php8.3-fpm
บน AlmaLinux หรือ Rocky Linux ที่ใช้ PHP จาก AppStream ไฟล์อยู่ที่ /etc/php.ini แก้ค่าเดียวกันแล้วรีสตาร์ต
sudo systemctl restart php-fpm
ถ้าใช้ Nginx ให้เพิ่มค่าต่อไปนี้ในบล็อก server ของเว็บ (หรือบล็อก http ใน /etc/nginx/nginx.conf เพื่อใช้กับทุกเว็บ)
client_max_body_size 136m;
ทดสอบและโหลดค่าใหม่
sudo nginx -t && sudo systemctl reload nginx
ผลที่ถูกต้องคือ syntax is ok และ test is successful ก่อน reload
ตรวจสอบผลลัพธ์
- กลับไปที่ Tools > Site Health > Info > Media Handling ค่าที่แสดงต้องเปลี่ยนเป็นค่าใหม่
- อัปโหลดไฟล์ทดสอบที่มีขนาดใกล้เคียงกับขนาดที่ต้องการ
- บน Cloud Server สร้างไฟล์ทดสอบชั่วคราวที่มี
<?php phpinfo();เปิดดูค่าupload_max_filesizeคอลัมน์ Local Value แล้ว ลบไฟล์นั้นทิ้งทันที เพราะเปิดเผยข้อมูลของเซิร์ฟเวอร์
ปัญหาที่พบบ่อย
แก้แล้วแต่ค่ายังไม่เปลี่ยน
มักเกิดจากแก้ไฟล์ php.ini ผิดตัว (เช่น ของ CLI) หรือไม่ได้รีสตาร์ต PHP-FPM ตรวจว่าเว็บใช้ PHP เวอร์ชันใด แล้วแก้ไฟล์ของเวอร์ชันนั้น สำหรับ .user.ini ให้รอรอบแคชของ PHP
ขึ้น 413 Request Entity Too Large
ข้อความนี้มาจาก Nginx ไม่ใช่ PHP ให้เพิ่ม client_max_body_size ตามขั้นตอนข้างต้น หากเว็บอยู่หลัง Proxy หรือ CDN ต้องตรวจขีดจำกัดของบริการนั้นด้วย
อัปโหลดแล้วหยุดกลางทางหรือขึ้น HTTP error
ไฟล์ใหญ่ใช้เวลานาน ให้เพิ่ม max_execution_time และ max_input_time บน Nginx อาจต้องเพิ่ม fastcgi_read_timeout ด้วย และตรวจว่าพื้นที่ดิสก์หรือโควตาของโฮสต์ยังเหลือพอ
เว็บแบบ Multisite ยังจำกัดขนาดอยู่
WordPress Multisite มีขีดจำกัดของตัวเอง ให้ไปที่ Network Admin > Settings แล้วแก้ Max upload file size ซึ่งกำหนดเป็น KB
สำหรับไฟล์ขนาดใหญ่มาก เช่น วิดีโอหลาย GB การอัปโหลดผ่าน SFTP แล้วใช้ปลั๊กอินนำเข้าไฟล์เข้าสู่ Media Library มักเหมาะกว่าการเพิ่มขีดจำกัดให้สูงมาก หากต้องการความช่วยเหลือ ติดต่อทีมซัพพอร์ต 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
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


