Cara Memperbaiki Error Batas PHP Max Input Vars di WordPress
Kesalahan batas PHP Max Input Vars adalah salah satu masalah sisi server yang paling umum — namun sering disalahpahami — yang dihadapi administrator WordPress. Ini secara diam-diam memotong pengiriman formulir, merusak fungsionalitas plugin, dan menyebabkan pemrosesan data yang tidak lengkap tanpa selalu melempar pesan kesalahan yang jelas. Jika Anda telah berjuang dengan pengaturan yang hilang, data formulir yang rusak, atau plugin WordPress yang tidak berfungsi dengan baik, panduan ini akan memandu Anda melalui semua yang perlu Anda ketahui: apa yang menyebabkan kesalahan, cara mendiagnosisnya, dan cara memperbaikinya menggunakan beberapa metode yang terbukti.
Apa Itu Batas PHP Max Input Vars?
Direktif max_input_vars adalah pengaturan konfigurasi PHP yang mengontrol jumlah maksimum variabel input yang akan diterima server Anda dalam satu permintaan. Ini berlaku untuk ketiga metode input:
- GET requests (string kueri URL)
- POST requests (pengiriman formulir)
- Data COOKIE
Nilai default biasanya 1000 variabel per permintaan. Ketika pengiriman formulir — atau plugin yang menghasilkan bidang dinamis — melampaui ambang batas ini, PHP secara diam-diam menghilangkan semua variabel di luar batas. Hasilnya adalah pemrosesan data yang tidak lengkap, halaman pengaturan yang rusak, dan perilaku plugin yang tidak dapat diprediksi.
Mengapa Ini Terjadi di WordPress Secara Khusus?
WordPress adalah platform yang sangat dapat diperluas. Page builder seperti Elementor atau WPBakery, plugin e-commerce kompleks seperti WooCommerce, sistem menu canggih, dan formulir kontak multi-bidang semuanya dapat menghasilkan ratusan — terkadang ribuan — variabel input dalam satu pengiriman. Batas default 1000 cukup tidak memadai untuk instalasi WordPress modern yang kaya fitur.
> Gejala umum meliputi: Item menu WordPress menghilang setelah disimpan, pengaturan plugin tidak tersimpan dengan benar, formulir besar mengirimkan data yang tidak lengkap, dan opsi penyesuai tema hilang.
Jika Anda menjalankan WordPress di paket VPS Hosting, Anda biasanya memiliki akses root penuh untuk menyelesaikan ini di tingkat server — pendekatan paling andal. Di lingkungan bersama, metode alternatif yang tercakup di bawah akan berlaku.
Langkah 1: Periksa Batas max_input_vars Saat Ini Anda
Sebelum membuat perubahan apa pun, konfirmasi konfigurasi PHP saat ini Anda. Cara paling bersih untuk melakukan ini adalah dengan menghasilkan file output phpinfo().
Buat File Info PHP
- Buka editor teks biasa (Notepad, VS Code, nano, dll.)
- Buat file baru dan tambahkan kode berikut:
- Simpan file sebagai phpinfo.php
- Unggah ke direktori root server web Anda (misalnya, /public_html/ atau /var/www/html/)
Baca Output
Buka browser Anda dan navigasikan ke:
yoursite.com/phpinfo.php
Gunakan Ctrl+F (atau Cmd+F) untuk mencari max_input_vars di halaman. Anda akan melihat dua kolom: nilai default yang dikompilasi dan nilai yang dikonfigurasi secara lokal. Catat apa yang saat ini diatur.
> ⚠️ Peringatan Keamanan: Hapus phpinfo.php segera setelah memeriksa. File ini mengekspos detail konfigurasi server yang sensitif dan tidak boleh tetap dapat diakses secara publik di server produksi.
Langkah 2: Tingkatkan Batas max_input_vars
Ada tiga metode utama untuk meningkatkan batas max_input_vars, masing-masing cocok untuk tingkat akses server yang berbeda. Pilih metode yang sesuai dengan lingkungan hosting Anda.
Metode 1: Edit File php.ini (Direkomendasikan untuk VPS & Server Dedicated)
Ini adalah metode paling otoritatif dan andal. Ini menerapkan perubahan di tingkat mesin PHP, menjadikannya pendekatan pilihan untuk administrator dengan akses tingkat server.
Temukan file php.ini Anda. Jalur umum meliputi:
| Versi PHP | Apache | PHP-FPM |
|---|---|---|
| PHP 7.4 | /etc/php/7.4/apache2/php.ini | /etc/php/7.4/fpm/php.ini |
| PHP 8.1 | /etc/php/8.1/apache2/php.ini | /etc/php/8.1/fpm/php.ini |
| PHP 8.2 | /etc/php/8.2/apache2/php.ini | /etc/php/8.2/fpm/php.ini |
Tidak yakin versi PHP mana yang Anda jalankan? Jalankan ini di terminal Anda:
php -v
Edit file:
sudo nano /etc/php/8.2/apache2/php.ini
Cari baris max_input_vars. Mungkin dikomentari dengan titik koma:
;max_input_vars = 1000
Batalkan komentarnya dan perbarui nilainya:
max_input_vars = 3000
Nilai 3000 cocok untuk sebagian besar instalasi WordPress. Untuk setup yang sangat kompleks dengan menu besar atau konfigurasi WooCommerce yang luas, Anda mungkin mempertimbangkan 5000.
Restart server web Anda untuk menerapkan perubahan:
Untuk Apache:
sudo systemctl restart apache2
Untuk Nginx dengan PHP-FPM:
sudo systemctl restart php8.2-fpm && sudo systemctl restart nginx
Metode ini sepenuhnya tersedia di Server Dedicated dan sebagian besar paket VPS yang tidak dikelola, memberikan Anda kontrol penuh atas lingkungan PHP Anda.
Metode 2: Edit File .htaccess (Untuk Apache Shared Hosting)
Jika Anda berada di lingkungan shared hosting atau tidak memiliki akses langsung ke php.ini, file .htaccess menawarkan alternatif praktis — asalkan host Anda memungkinkan direktif PHP untuk ditimpa di tingkat direktori.
- Navigasikan ke direktori root instalasi WordPress Anda (tempat wp-config.php berada)
- Buka atau buat file .htaccess
- Tambahkan baris berikut:
php_value max_input_vars 3000
- Simpan file
Penting: Metode ini hanya berfungsi di server Apache di mana mod_rewrite diaktifkan. Ini tidak akan berfungsi di Nginx. Jika Anda menerima kesalahan 500 Internal Server Error setelah menyimpan, host Anda tidak mengizinkan direktif ini — hapus baris dan gunakan Metode 3 sebagai gantinya.
Jika Anda berada di paket Shared Web Hosting, hubungi tim dukungan penyedia hosting Anda terlebih dahulu untuk mengonfirmasi apakah penimpaan direktif PHP diizinkan di .htaccess.
Metode 3: Tambahkan Direktif ke wp-config.php
Metode ini menggunakan fungsi ini() PHP secara langsung dalam file konfigurasi WordPress. Ini adalah solusi yang banyak digunakan untuk lingkungan di mana modifikasi php.ini maupun .htaccess tidak tersedia.
- Buka file wp-config.php di direktori root WordPress Anda
- Tambahkan baris berikut sebelum komentar yang berbunyi /* That’s all, stop editing! */:
@ini_set( ‘max_input_vars’, 3000 );
- Simpan file
Batasan yang perlu diperhatikan: Beberapa penyedia hosting menonaktifkan ini() untuk alasan keamanan, yang berarti metode ini mungkin gagal secara diam-diam. Selain itu, operator penekanan kesalahan @ digunakan di sini untuk mencegah peringatan jika fungsi dibatasi — tetapi juga menyembunyikan kegagalan. Setelah menerapkan perubahan ini, selalu verifikasi bahwa itu berhasil menggunakan metode phpinfo.php yang dijelaskan di Langkah 1.
Metode 4: Gunakan File php.ini Tingkat Pengguna atau .user.ini
Di banyak lingkungan shared hosting yang menjalankan PHP-FPM, Anda dapat menempatkan file .user.ini atau php.ini kustom di direktori root situs web Anda:
- Buat file baru bernama .user.ini di direktori root WordPress Anda
- Tambahkan konten berikut:
max_input_vars = 3000
- Simpan dan unggah file
PHP-FPM memindai file .user.ini secara berkala (biasanya setiap 5 menit secara default, dikendalikan oleh user_ini.cache_ttl). Perubahan mungkin tidak langsung berlaku — tunggu beberapa menit sebelum menguji.
Langkah 3: Verifikasi Perubahan Telah Berlaku
Setelah menerapkan metode pilihan Anda, sangat penting untuk mengonfirmasi batas baru benar-benar aktif.
- Navigasikan kembali ke phpinfo.php di browser Anda (unggah ulang file jika Anda menghapusnya)
- Cari max_input_vars
- Konfirmasi kolom Local Value sekarang menunjukkan 3000 (atau nilai pilihan Anda)
Jika nilainya belum berubah, coba hal berikut:
- Untuk perubahan php.ini: Pastikan Anda mengedit file php.ini yang benar untuk versi PHP dan SAPI Anda (Apache vs. FPM). Verifikasi server web sepenuhnya dimulai ulang.
- Untuk perubahan .htaccess: Periksa bahwa AllowOverride All diatur dalam konfigurasi virtual host Apache Anda.
- Untuk perubahan wp-config.php: Konfirmasi ini() tidak dinonaktifkan dalam konfigurasi PHP Anda dengan memeriksa direktif disable_functions di php.ini.
> 🔒 Ingat: Hapus phpinfo.php dari server Anda segera setelah Anda telah mengonfirmasi perubahan. Membiarkannya dapat diakses adalah risiko keamanan.
Pengaturan PHP Tambahan yang Layak Ditinjau
Sementara Anda memiliki php.ini terbuka, ada baiknya mengaudit pengaturan terkait ini yang biasanya mempengaruhi kinerja dan stabilitas WordPress:
| Direktif | Nilai yang Direkomendasikan | Tujuan |
|---|---|---|
| max_input_vars | 3000–5000 | Batas variabel input |
| memory_limit | 256M | Memori PHP per skrip |
| upload_max_filesize | 64M–128M | Ukuran unggahan file maksimum |
| post_max_size | 128M | Ukuran data POST maksimum |
| max_execution_time | 120–300 | Waktu tunggu skrip dalam detik |
| max_input_time | 120 | Waktu tunggu penguraian input |
Menjaga nilai-nilai ini tetap optimal memastikan situs WordPress Anda menangani operasi kompleks — impor besar, unggahan media, dan halaman kaya plugin — tanpa gangguan.
Jika Anda mengelola beberapa situs WordPress dan menginginkan antarmuka yang disederhanakan untuk konfigurasi PHP, pertimbangkan VPS dengan cPanel, yang menyediakan manajer konfigurasi PHP grafis bersama kontrol server penuh.
Memilih Lingkungan Hosting yang Tepat untuk WordPress
Kemudahan yang dapat Anda gunakan untuk menyelesaikan masalah konfigurasi PHP seperti ini secara langsung terkait dengan lingkungan hosting Anda. Berikut adalah rincian cepat:
- Shared Hosting: Kontrol PHP terbatas; andalkan .htaccess, .user.ini, atau tiket dukungan. Cocok untuk situs yang lebih kecil.
- VPS Hosting: Akses root penuh; edit php.ini secara langsung dan restart layanan. Ideal untuk situs WordPress yang berkembang dengan ekosistem plugin yang kompleks.
- Server Dedicated: Kontrol dan sumber daya maksimum; tidak ada kontention sumber daya dengan pengguna lain. Terbaik untuk penyebaran WordPress lalu lintas tinggi atau enterprise.
Untuk sebagian besar administrator WordPress yang serius, upgrade ke paket VPS Hosting adalah cara paling efektif untuk menghilangkan batasan konfigurasi server dan mengambil kepemilikan penuh atas lingkungan PHP Anda.
Kesimpulan
Kesalahan batas PHP max_input_vars adalah masalah yang mudah dipahami setelah Anda memahami apa yang menyebabkannya — PHP cukup memberlakukan batas berapa banyak variabel input yang akan diproses per permintaan. Perbaikannya sama mudahnya: tingkatkan b
untuk semua layanan hosting