Hemat 15% untuk semua layanan hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode: Skills Memulai
Bagian FAQ
Administrasi Linux

Mengonfigurasi File php.ini: Panduan Lengkap untuk Mengoptimalkan PHP di Server Anda

File php.ini adalah file konfigurasi master untuk PHP — tulang punggung dari hampir setiap aplikasi web modern. Baik Anda menjalankan WordPress, Laravel, Magento, atau aplikasi kustom, memahami cara mengonfigurasi php.ini dengan benar dapat secara dramatis meningkatkan performa server Anda, meningkatkan keamanan, dan memastikan kompatibilitas yang mulus dengan stack perangkat lunak Anda.

Panduan komprehensif ini membimbing Anda melalui semua yang perlu Anda ketahui: apa yang dilakukan php.ini, cara menemukannya, cara mengeditnya dengan aman, dan cara memverifikasi bahwa perubahan Anda berfungsi dengan benar.

1. Apa Itu php.ini dan Mengapa Hal Ini Penting?

File php.ini adalah file konfigurasi teks biasa yang dibaca PHP setiap kali diinisialisasi. File ini berisi ratusan direktif — pasangan kunci-nilai yang mengontrol hampir setiap aspek perilaku runtime PHP, termasuk:

  • Alokasi memori untuk skrip
  • Batas unggah file dan ukuran data POST
  • Tingkat pelaporan kesalahan dan logging
  • Pengaturan manajemen sesi
  • Pemuatan ekstensi (misalnya, PDO, cURL, OPcache)
  • Pembatasan keamanan seperti disable_functions dan open_basedir
  • Batas waktu eksekusi untuk mencegah skrip yang tidak terkontrol

Mendapatkan pengaturan ini dengan benar bukan hanya masalah kenyamanan — hal ini secara langsung mempengaruhi stabilitas aplikasi Anda, postur keamanan, dan pengalaman pengguna akhir. Pengaturan PHP yang salah konfigurasi adalah penyebab utama kesalahan aplikasi, kegagalan unggah file, kerusakan kelelahan memori, dan kerentanan keamanan yang dapat dieksploitasi.

Jika Anda menghosting aplikasi PHP Anda di paket VPS Hosting, Anda memiliki akses root penuh untuk memodifikasi php.ini dengan bebas — memberikan Anda kontrol penuh atas lingkungan PHP Anda.

2. Menemukan File php.ini

Lokasi php.ini bervariasi tergantung pada sistem operasi Anda, versi PHP, dan Server API (SAPI) yang digunakan (Apache mod_php, PHP-FPM, atau CLI). Berikut adalah tiga metode yang dapat diandalkan untuk menemukannya.

Metode 1: Menggunakan Command Line (Metode Tercepat)

Buka terminal Anda atau terhubung melalui SSH dan jalankan:

php --ini

Contoh output:

Configuration File (php.ini) Path: /etc/php/8.2/cli
Loaded Configuration File:         /etc/php/8.2/cli/php.ini
Scan for additional .ini files in: /etc/php/8.2/cli/conf.d
Additional .ini files parsed:      /etc/php/8.2/cli/conf.d/10-opcache.ini, ...

> Penting: PHP sering memiliki file php.ini terpisah untuk SAPI yang berbeda. Versi CLI (/etc/php/8.2/cli/php.ini) digunakan saat menjalankan PHP dari command line, sementara versi Apache atau PHP-FPM (/etc/php/8.2/apache2/php.ini atau /etc/php/8.2/fpm/php.ini) digunakan untuk permintaan web. Selalu edit yang benar sesuai dengan kasus penggunaan Anda.

Metode 2: Menggunakan phpinfo() di Browser

Metode ini mengungkapkan dengan tepat file php.ini mana yang dimuat oleh web server Anda — yang mungkin berbeda dari versi CLI.

Langkah 1: Buat file baru di direktori root web Anda:

sudo nano /var/www/html/info.php

Langkah 2: Tambahkan konten berikut:

<?php
phpinfo();
?>

Langkah 3: Simpan file, kemudian buka browser Anda dan navigasikan ke:

http://yourdomain.com/info.php

Langkah 4: Cari baris “Loaded Configuration File” di dekat bagian atas output. Ini akan menampilkan jalur lengkap ke file php.ini yang aktif.

> ⚠️ Peringatan Keamanan: Hapus info.php segera setelah digunakan. File ini mengekspos detail konfigurasi server yang sensitif yang dapat dimanfaatkan oleh penyerang.

sudo rm /var/www/html/info.php

Metode 3: Menggunakan php -r (One-Liner Cepat)

php -r "echo php_ini_loaded_file();"

Ini mencetak jalur file php.ini yang dimuat langsung ke terminal Anda — tidak perlu pembuatan file.

Lokasi php.ini Umum Berdasarkan Platform

Platform / SetupJalur php.ini Tipikal
Ubuntu/Debian + Apache (PHP 8.2)/etc/php/8.2/apache2/php.ini
Ubuntu/Debian + PHP-FPM (PHP 8.2)/etc/php/8.2/fpm/php.ini
Ubuntu/Debian + CLI (PHP 8.2)/etc/php/8.2/cli/php.ini
CentOS/RHEL + Apache/etc/php.ini
cPanel/WHM/usr/local/lib/php.ini
Windows (XAMPP)C:xamppphpphp.ini
macOS (Homebrew PHP 8.2)/opt/homebrew/etc/php/8.2/php.ini

3. Mengedit File php.ini

Langkah 1: Buat Cadangan Terlebih Dahulu

Sebelum membuat perubahan apa pun, selalu buat cadangan:

sudo cp /etc/php/8.2/apache2/php.ini /etc/php/8.2/apache2/php.ini.bak

Ini memungkinkan Anda untuk dengan cepat mengembalikan konfigurasi asli jika terjadi kesalahan.

Langkah 2: Buka File di Editor Teks

Gunakan nano untuk pengalaman yang ramah pemula:

sudo nano /etc/php/8.2/apache2/php.ini

Atau gunakan vim untuk pengeditan yang lebih canggih:

sudo vim /etc/php/8.2/apache2/php.ini

Langkah 3: Navigasi dan Edit Direktif

File php.ini berukuran besar (sering kali 1.500+ baris). Gunakan fungsi pencarian editor Anda untuk melompat ke direktif tertentu:

  • Di nano: Tekan CTRL + W, kemudian ketik nama direktif (misalnya, memory_limit)
  • Di vim: Tekan /, kemudian ketik nama direktif

Langkah 4: Simpan dan Keluar

  • nano: Tekan CTRL + X, kemudian Y, kemudian Enter
  • vim: Tekan ESC, ketik :wq, kemudian tekan Enter

4. Direktif php.ini Utama Dijelaskan

Berikut adalah penjelasan rinci tentang direktif php.ini yang paling penting dan harus Anda ketahui serta konfigurasi:

Batas Memori & Sumber Daya

; Maximum memory a single PHP script can allocate
memory_limit = 256M

; Maximum time (in seconds) a script is allowed to run
max_execution_time = 60

; Maximum time PHP will spend parsing request data
max_input_time = 120

; Maximum number of input variables (important for complex forms)
max_input_vars = 3000

Pengaturan Unggah File

; Whether file uploads are permitted
file_uploads = On

; Maximum size of an individual uploaded file
upload_max_filesize = 64M

; Maximum size of all POST data (must be >= upload_max_filesize)
post_max_size = 64M

; Maximum number of files that can be uploaded simultaneously
max_file_uploads = 20

> Aturan praktis: post_max_size harus selalu sama dengan atau lebih besar dari upload_max_filesize. Jika post_max_size lebih kecil, unggahan akan gagal secara diam-diam.

Pelaporan & Pencatatan Kesalahan

; ---- DEVELOPMENT ENVIRONMENT ----
; Show all errors on screen (never use in production)
error_reporting = E_ALL
display_errors = On
display_startup_errors = On

; ---- PRODUCTION ENVIRONMENT ----
; Log errors to a file, never display them to users
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/log/php/error.log

Manajemen Sesi

; Where session data is stored on the server
session.save_path = "/var/lib/php/sessions"

; Session cookie lifetime in seconds (0 = until browser closes)
session.cookie_lifetime = 0

; Prevent JavaScript from accessing session cookies (XSS protection)
session.cookie_httponly = On

; Only send session cookies over HTTPS
session.cookie_secure = On

; Strict session ID mode (prevents session fixation attacks)
session.use_strict_mode = On

OPcache (Peningkat Performa)

OPcache secara dramatis meningkatkan performa PHP dengan menyimpan bytecode skrip yang telah dikompilasi sebelumnya dalam memori bersama:

opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1

5. Memulai Ulang Web Server Anda

Perubahan pada php.ini tidak berlaku sampai Anda memulai ulang layanan yang relevan. Gunakan perintah yang sesuai untuk pengaturan Anda:

Apache (mod_php)

sudo systemctl restart apache2
# or on CentOS/RHEL:
sudo systemctl restart httpd

Nginx + PHP-FPM

# Restart PHP-FPM (replace 8.2 with your PHP version)
sudo systemctl restart php8.2-fpm

# Restart Nginx
sudo systemctl restart nginx

Graceful Reload (Zero Downtime)

Untuk server produksi, gunakan graceful reload untuk menghindari penjatuhan koneksi aktif:

# Apache graceful reload
sudo systemctl reload apache2

# PHP-FPM graceful reload
sudo systemctl reload php8.2-fpm

Verifikasi Layanan Berjalan

sudo systemctl status apache2
sudo systemctl status php8.2-fpm

6. Memverifikasi Perubahan Anda

Setelah memulai ulang server Anda, konfirmasi bahwa pengaturan baru Anda aktif menggunakan salah satu metode berikut:

Metode 1: Command Line Grep

# Check memory_limit
php -i | grep memory_limit

# Check upload_max_filesize
php -i | grep upload_max_filesize

# Check multiple values at once
php -i | grep -E 'memory_limit|upload_max_filesize|post_max_size|max_execution_time'

Metode 2: Halaman phpinfo()

Buat ulang file info.php secara sementara (ingat untuk menghapusnya setelahnya) dan cari direktif yang Anda ubah. Nilai yang diubah akan muncul di kolom "Local Value" dan "Master Value".

Metode 3: PHP One-Liner

php -r "echo ini_get('memory_limit');"

7. Tips Optimasi php.ini Lanjutan

Menggunakan .htaccess untuk Mengganti php.ini (Apache Saja)

Jika Anda menggunakan shared hosting atau tidak memiliki akses root, Anda dapat mengganti pengaturan php.ini tertentu melalui .htaccess:

php_value memory_limit 256M
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 120

> Catatan: Ini hanya berfungsi jika AllowOverride diaktifkan dan penyedia hosting mengizinkan penggantian direktif PHP.

Menggunakan ini_set() dalam Kode PHP

Untuk pengaturan khusus aplikasi, Anda dapat mengganti nilai php.ini saat runtime dalam skrip PHP Anda:

<?php
ini_set('memory_limit', '512M');
ini_set('max_execution_time', '300');
?>

File php.ini Per-Direktori (PHP-FPM)

Dengan PHP-FPM, Anda dapat menerapkan pengaturan php.ini yang berbeda ke host virtual atau direktori yang berbeda dengan mengonfigurasi file pool di /etc/php/8.2/fpm/pool.d/. Ini sangat berguna saat menghosting beberapa aplikasi dengan persyaratan berbeda.

Jika Anda mengelola beberapa aplikasi PHP, VPS dengan cPanel membuat pengelolaan pengaturan PHP per-domain jauh lebih mudah melalui antarmuka grafis tanpa perlu mengedit file konfigurasi secara manual.

8. Pengerasan Keamanan melalui php.ini

Mengonfigurasi php.ini dengan benar adalah salah satu cara paling efektif untuk mengeraskan lingkungan PHP Anda terhadap serangan umum.

Nonaktifkan Fungsi Berbahaya

; Prevent execution of system commands from PHP scripts
disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source

Batasi Akses Sistem File

; Limit PHP file access to specific directories
open_basedir = /var/www/html:/tmp

Sembunyikan Informasi Versi PHP

; Don't expose PHP version in HTTP headers
expose_php = Off

Nonaktifkan Inklusi File Jarak Jauh

; Prevent PHP from including remote URLs (common attack vector)
allow_url_fopen = Off
allow_url_include = Off

Keamanan Sesi yang Lebih Kuat

session.cookie_httponly = On
session.cookie_secure = On
session.use_strict_mode = On
session.cookie_samesite = "Strict"

> Pro Tip: Jika Anda menjalankan situs e-commerce atau menangani data pengguna yang sensitif, pasangkan php.ini yang sudah dikeraskan dengan SSL Certificate yang valid untuk mengenkripsi semua data dalam transit. HTTPS wajib agar session.cookie_secure = On berfungsi dengan benar.

9. Kesalahan php.ini Umum yang Harus Dihindari

KesalahanMengapa Ini MasalahPerbaikan
Setting memory_limit = -1 in productionMemungkinkan skrip mengonsumsi RAM tanpa batas, menyebabkan server crashSet batas yang masuk akal seperti 256M atau 512M
display_errors = On in productionMengekspos jalur file sensitif dan kredensial database kepada penggunaSet ke Off dan gunakan log_errors = On sebagai gantinya
post_max_size < upload_max_filesizeMenyebabkan kegagalan upload yang senyapSelalu set post_max_sizeupload_max_filesize
Mengedit php.ini yang salahPerubahan tidak diterapkan pada permintaan webGunakan phpinfo() untuk mengonfirmasi file mana yang dimuat oleh web server Anda
Tidak memulai ulang server setelah perubahanPengaturan lama tetap aktifSelalu restart Apache atau PHP-FPM setelah mengedit
Meninggalkan info.php di serverMengekspos konfigurasi server lengkap kepada penyerangHapus segera setelah digunakan
Setting allow_url_include = OnMengaktifkan serangan Remote File Inclusion (RFI)Selalu simpan ini Off

10. Kesimpulan

Menguasai konfigurasi php.ini adalah keterampilan fundamental bagi setiap administrator sistem atau pengembang web. Pengaturan yang tepat dapat membuat perbedaan antara server yang lambat dan rentan serta lingkungan yang cepat, aman, dan siap produksi.

Untuk merangkum poin-poin kunci:

  • Selalu buat cadangan php.ini sebelum melakukan perubahan
  • Identifikasi file yang benar — CLI dan web server SAPIs sering menggunakan file php.ini yang berbeda
  • Sesuaikan batas sumber daya (memory_limit, max_execution_time, upload_max_filesize) dengan kebutuhan aplikasi Anda
  • Tingkatkan keamanan dengan menonaktifkan fungsi berbahaya, menyembunyikan informasi versi, dan membatasi akses file
  • Aktifkan OPcache untuk peningkatan performa yang signifikan
  • Jangan pernah menampilkan error di produksi — catat error tersebut sebagai gantinya
  • Restart web server Anda setelah setiap perubahan dan verifikasi dengan phpinfo() atau php -i

Lingkungan hosting yang Anda pilih juga memainkan peran besar dalam seberapa banyak kontrol yang Anda miliki atas konfigurasi PHP. Dengan Dedicated Servers dari AlexHost, Anda mendapatkan akses lengkap dan tanpa batasan ke konfigurasi PHP server Anda — ideal untuk aplikasi dengan traffic tinggi dan persyaratan kompleks. Untuk proyek yang lebih kecil atau tim yang baru memulai, paket Shared Web Hosting menyediakan lingkungan terkelola di mana banyak pengaturan PHP sudah dioptimalkan sebelumnya untuk Anda.

Tinjau kembali konfigurasi php.ini Anda secara berkala seiring aplikasi berkembang, versi PHP diperbarui, dan pola traffic Anda berubah. Lingkungan PHP yang sudah dioptimalkan dengan baik bukan merupakan pengaturan satu kali — ini adalah praktik berkelanjutan yang memberikan hasil dalam performa, keandalan, dan keamanan.