Lỗi
Khi cố gắng tải lên một giao diện (theme), plugin hoặc tệp đa phương tiện lớn lên trang web WordPress, bạn có thể gặp màn hình trắng hoặc phản hồi cụ thể từ máy chủ:
413 Request Entity Too Large
Lỗi này cho biết tệp bạn đang cố gắng tải lên vượt quá giới hạn kích thước tối đa được xác định trên máy chủ web của bạn. Mặc dù WordPress có các giới hạn nội bộ riêng, thông báo cụ thể này hầu như luôn đến từ phần mềm máy chủ (thường là Nginx) đóng vai trò là người gác cổng trước khi yêu cầu tiếp cận được WordPress.
Nguyên nhân gốc rễ
Thủ phạm chính là chỉ thị client_max_body_size trong Nginx. Theo mặc định, Nginx thường giới hạn tải lên tệp ở mức 1MB. Nếu tệp ZIP hoặc hình ảnh độ phân giải cao của bạn lớn hơn mức đó, máy chủ sẽ ngắt kết nối ngay lập tức để bảo vệ tài nguyên, dẫn đến mã trạng thái 413.
Các nguyên nhân phụ bao gồm giới hạn cấu hình PHP (upload_max_filesize và post_max_size) hoặc cài đặt proxy nếu bạn đang sử dụng dịch vụ như Cloudflare.
Bước 1: Chỉnh sửa cấu hình Nginx
Vì hầu hết các ngăn xếp WordPress hiện đại (như LEMP) đều sử dụng Nginx, đây là cách khắc phục hiệu quả nhất. Bạn cần yêu cầu Nginx cho phép các nội dung yêu cầu (request body) lớn hơn.
- Kết nối với máy chủ của bạn qua SSH.
- Mở tệp cấu hình Nginx của bạn. Tùy thuộc vào thiết lập, đây có thể là cấu hình chính hoặc một khối (block) trang web cụ thể:
# Đối với cài đặt toàn cục
sudo nano /etc/nginx/nginx.conf
# HOẶC cho một trang web cụ thể
sudo nano /etc/nginx/sites-available/yourdomain.com
- Tìm khối
http,server, hoặclocation. Thêm hoặc cập nhật chỉ thịclient_max_body_size. Đặt thành 64M thường là đủ cho hầu hết các trang web WordPress:
server {
listen 80;
server_name yourdomain.com;
# Tăng giới hạn tải lên
client_max_body_size 64M;
location / {
...
}
}
- Lưu tệp và kiểm tra cấu hình để tìm lỗi cú pháp:
sudo nginx -t
- Nếu kiểm tra thành công, hãy tải lại (reload) Nginx để áp dụng các thay đổi:
sudo systemctl reload nginx
Bước 2: Cập nhật cài đặt PHP
Ngay cả sau khi sửa Nginx, PHP vẫn có thể chặn việc tải lên nếu các giới hạn nội bộ của nó thấp hơn kích thước tệp. Bạn cần đồng bộ hóa các giá trị này.
- Tìm tệp
php.inicủa bạn. Đường dẫn thay đổi theo phiên bản (ví dụ: PHP 8.1):
sudo nano /etc/php/8.1/fpm/php.ini
- Tìm kiếm và sửa đổi các dòng sau:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
Lưu ý: post_max_size phải bằng hoặc lớn hơn upload_max_filesize.
- Khởi động lại dịch vụ PHP-FPM:
sudo systemctl restart php8.1-fpm
Bước 3: Kiểm tra giới hạn Proxy (Cloudflare)
Nếu bạn sử dụng Cloudflare, hãy lưu ý rằng gói Miễn phí có giới hạn cứng là 100MB cho việc tải lên của khách hàng. Nếu bạn đang cố gắng tải lên một tệp lớn hơn 100MB, các thay đổi trên Nginx sẽ không có tác dụng vì Cloudflare sẽ kích hoạt lỗi 413 trước khi yêu cầu đến được máy chủ của bạn.
Trong trường hợp này, bạn có hai lựa chọn:
- Tải tệp trực tiếp qua SFTP/FTP.
- Tạm thời bỏ qua Cloudflare (Chuyển đám mây DNS sang màu xám) trong khi thực hiện tải lên.
Xác minh
Để xác nhận cách khắc phục đang hoạt động:
- Đăng nhập vào Bảng điều khiển WordPress của bạn.
- Đi tới Media > Add New (Thư viện > Thêm mới).
- Tìm dòng chữ: "Maximum upload file size: 64 MB." Nếu con số này đã tăng lên so với giá trị trước đó, các thay đổi PHP của bạn đã có hiệu lực.
- Thử tải lên tệp đã thất bại trước đó. Bây giờ nó sẽ được xử lý mà không gặp lỗi 413.
Mẹo khắc phục sự cố
- Kiểm tra quyền hạn: Nếu lỗi 413 đã biến mất nhưng bạn gặp lỗi "Missing a temporary folder" hoặc "Failed to write to disk", hãy kiểm tra quyền của thư mục
wp-content/uploads(thường là 755). - Multi-site: Nếu bạn đang ở trong mạng WordPress Multisite, có một cài đặt bổ sung trong Network Admin > Settings được gọi là "Max upload file size" có thể ghi đè cài đặt máy chủ.
- Giới hạn ở cấp độ giao diện: Một số giao diện được mã hóa kém cố gắng đặt các giá trị
ini_settrongfunctions.php. Nếu các thay đổi ở cấp độ máy chủ không hoạt động, hãy kiểm tra xem giao diện của bạn có đang ép buộc một giới hạn thấp hơn hay không.

