Một số dự án website sử dụng plugin phổ biến Advanced Custom Fields có thể gặp lỗi “Xác thực thất bại. ACF không thể thực hiện xác thực vì máy chủ không nhận được mã nonce.” trong quá trình sử dụng. Hướng dẫn sau từ nhóm chuyên gia về Web tại Code Tốt.
Tại sao web lại gặp lỗi này?
Khi làm dự án cho khách hàng (đặc biệt là các trang Dashboard hoặc Landing Page dài), số lượng Repeater Field hoặc Flexible Content của ACF có thể lên đến hàng trăm, thậm chí hàng ngàn.
Mỗi ô nhập liệu là một “biến” (variable). Trong khi đó, hầu hết các server hiện nay chỉ cho phép tối đa 1.000 biến gửi đi cùng lúc (max_input_vars = 1000). Khi vượt quá con số này, server sẽ tự động “cắt đuôi” dữ liệu. Và thật không may, mã bảo mật nonce của WordPress lại nằm ở cuối danh sách đó. Mất nonce = Xác thực thất bại.
Cách fix triệt để theo từng hệ thống
Dưới đây là cách mà đội ngũ kỹ thuật tại Codetot thường áp dụng cho cấu hình trên ứng dụng web của khách hàng:
1. Với OpenLiteSpeed (OLS)
Tại Code Tốt, các chuyên gia ưu tiên dùng OLS vì hiệu năng cực đỉnh. Bạn có thể vào cấu hình Virtual Host và thêm đoạn code này:
phpIniOverride {
php_value max_input_vars 3000
}
2. Với Nginx (Môi trường PHP-FPM)
Nếu server khách hàng dùng Nginx, bạn cần can thiệp trực tiếp vào file php.ini. Tụi mình thường đẩy hẳn lên 10,000 để đảm bảo khách hàng có thêm bao nhiêu field cũng không lo bị lỗi lại:
max_input_vars = 3000
3. Với Apache
Đơn giản nhất cho các bạn dùng Shared Hosting, chỉ cần thêm một dòng vào file .htaccess:
php_value max_input_vars 3000
Lưu ý: sau khi cấu hình, bạn nên restart service nếu cần.
Các khách hàng đang sử dụng dịch vụ Bảo trì website tại Code Tốt có thể liên hệ với chúng tôi nếu gặp lỗi tương tự để được kiểm tra và xử lý miễn phí.
