คำตอบสั้น ๆ: เพิ่มขนาดไฟล์อัปโหลดสูงสุดใน WordPress ด้วยการปรับ upload_max_filesize และ post_max_size ผ่าน Plesk, DirectAdmin, .user.ini หรือ php.ini และ Nginx
คู่มือนี้อธิบาย 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 |
สิ่งที่ต้องเตรียม (WordPress)
- สิทธิ์เข้าสู่ระบบ 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