ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

Home เพิ่มขนาดไฟล์อัปโหลดสูงสุดใน WordPress

เพิ่มขนาดไฟล์อัปโหลดสูงสุดใน 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_filesize136M
memory_limitหน่วยความจำที่สคริปต์ PHP ใช้ได้ ควรมากกว่า post_max_size256M
max_execution_time และ max_input_timeเวลาสูงสุดที่ใช้ประมวลผลและรับข้อมูล (วินาที)300
client_max_body_size (Nginx)ขนาดคำขอที่ Nginx ยอมรับ ค่าเริ่มต้นคือ 1m136m

สิ่งที่ต้องเตรียม

  • สิทธิ์เข้าสู่ระบบ 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

  1. เข้าสู่ระบบ Plesk แล้วไปที่ Websites & Domains
  2. ที่โดเมนที่ต้องการ คลิก PHP (ในบางเวอร์ชันของ Plesk ใช้ชื่อ PHP Settings)
  3. ในส่วนการตั้งค่าด้านล่าง แก้ค่า memory_limit, max_execution_time, max_input_time, post_max_size และ upload_max_filesize สามารถเลือกค่าจากรายการหรือพิมพ์ค่าเองได้
  4. คลิก 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/

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security