Cara Menggunakan File .user.ini
di ServBay: Panduan Konfigurasi PHP Lokal
ServBay adalah lingkungan pengembangan Web lokal terintegrasi yang kuat, dibuat khusus untuk para developer dan mendukung berbagai bahasa serta stack teknologi, termasuk manajemen versi PHP yang fleksibel serta opsi konfigurasi yang mudah. Dalam praktik pengembangan, tiap proyek mungkin membutuhkan pengaturan PHP yang berbeda, seperti batas maksimum unggahan file, pembatasan memori, atau tingkat pelaporan error. Mengubah file php.ini
global secara langsung akan mempengaruhi semua proyek, yang tentu menyulitkan dalam mengelola banyak proyek secara bersamaan.
Untungnya, PHP menyediakan mekanisme file .user.ini
yang memungkinkan developer mendefinisikan pengaturan PHP khusus pada direktori tertentu beserta subdirektorinya, tanpa harus menyentuh php.ini
global. ServBay sepenuhnya mendukung .user.ini
, sehingga menyesuaikan konfigurasi PHP untuk satu proyek atau direktori menjadi mudah dan praktis.
Artikel ini akan secara detail membahas prinsip kerja file .user.ini
, cara menggunakan di lingkungan ServBay, serta contoh penerapan konfigurasi PHP khusus untuk proyek tertentu.
Pengantar File .user.ini
File .user.ini
adalah fitur yang diperkenalkan sejak PHP 5.3.0, bertujuan menyediakan cara yang lebih fleksibel dan aman dibanding penggunaan lama php_value
dan php_flag
di konfigurasi server web (misal .htaccess
pada Apache) untuk mengatur parameter PHP. File ini memungkinkan developer menempatkan .user.ini
pada direktori yang dapat diakses web, di mana instruksi konfigurasi di dalamnya hanya berlaku untuk skrip PHP pada direktori tersebut dan subdirektorinya.
Fitur Utama
- Ruang Lingkup Lokal: Instruksi yang terdapat dalam file
.user.ini
hanya berlaku di direktori tempat file berada dan seluruh subdirektorinya, tanpa memengaruhi pengaturan globalphp.ini
ServBay atau proyek lain. - Sangat Fleksibel: Developer bisa membuat set konfigurasi PHP yang berbeda untuk setiap proyek, sesuai kebutuhan masing-masing.
- Mudah Dikelola: Tidak perlu mengubah file konfigurasi server global atau PHP, sehingga meminimalisasi konflik konfigurasi dan membuat tiap pengaturan proyek lebih mandiri serta portabel.
- Tanpa Restart: Tidak seperti perubahan pada
php.ini
yang biasanya mengharuskan restart PHP-FPM atau server web, perubahan pada file.user.ini
umumnya akan aktif secara otomatis sesuai interval yang ditentukan olehuser_ini.cache_ttl
(default biasanya 300 detik atau 5 menit).
Instruksi yang Dapat Dikonfigurasi
Tidak semua instruksi konfigurasi PHP dapat diatur melalui file .user.ini
. Ruang lingkup pengaturan ditentukan melalui "Changeable Modes". Hanya instruksi dengan mode PHP_INI_USER
, PHP_INI_PERDIR
, atau PHP_INI_ALL
yang bisa dikonfigurasi di .user.ini
.
Contoh instruksi yang sering diatur lewat .user.ini
:
upload_max_filesize
post_max_size
memory_limit
display_errors
log_errors
max_execution_time
session.save_path
date.timezone
Instruksi dengan mode PHP_INI_SYSTEM
(misal extension_dir
, zend_extension
, disable_functions
, dll) tidak bisa diatur lewat .user.ini
, hanya dapat diatur pada file php.ini
utama atau konfigurasi server web.
Untuk memastikan mode masing-masing instruksi, silakan cek halaman manual PHP tentang instruksi konfigurasi php.ini.
Menggunakan .user.ini
di ServBay
Proses penggunaan .user.ini
di ServBay sangatlah sederhana. Berikut langkah-langkahnya, menggunakan contoh pengaturan upload_max_filesize
dan memory_limit
.
Misal, direktori utama website Anda berada di /Applications/ServBay/www/
, dan Anda ingin membuat pengaturan PHP khusus untuk proyek bernama myproject
yang root web-nya adalah /Applications/ServBay/www/myproject/public
.
Langkah 1: Tentukan Direktori Target
Tentukan dulu direktori mana yang akan diberi konfigurasi PHP khusus. Biasanya, ini adalah root web server dari proyek Anda (misal, direktori public
pada proyek Laravel atau Symfony), atau subdirektori tertentu yang membutuhkan konfigurasi spesial.
Contoh: /Applications/ServBay/www/myproject/public
Langkah 2: Buat atau Edit File .user.ini
Buat file bernama .user.ini
di direktori target ini (atau edit jika sudah ada). Perlu diketahui, file yang diawali tanda titik seperti .user.ini
biasanya tersembunyi di banyak file system, jadi Anda mungkin perlu mengaktifkan tampilan file tersembunyi di file manager.
Anda bisa membuat file melalui terminal:
bash
cd /Applications/ServBay/www/myproject/public
touch .user.ini
1
2
2
Selanjutnya, buka file .user.ini
tersebut dengan editor teks, lalu tambahkan instruksi konfigurasi PHP yang diinginkan, satu per baris. Contoh:
ini
; Atur ukuran maksimum file upload menjadi 20MB
upload_max_filesize = 20M
; Batasi memori skrip PHP hingga 256MB
memory_limit = 256M
; Aktifkan penampilan error (disarankan hanya untuk development)
display_errors = On
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Simpan dan tutup file .user.ini
setelah selesai.
Langkah 3: Tunggu Konfigurasi Aktif atau Lakukan Refresh
Perubahan pada .user.ini
tidak langsung aktif, karena PHP melakukan cache pada file ini untuk meningkatkan performa. Secara default, berapa lama cache tersebut berlaku diatur oleh instruksi user_ini.cache_ttl
, umumnya 300 detik (5 menit). Setelah cache kadaluarsa, perubahan akan diterapkan secara otomatis.
Jika ingin agar perubahan langsung aktif, Anda bisa mencoba cara berikut (efektivitas tergantung pada versi dan setup ServBay):
- Restart Proses PHP-FPM Terkait: Pada antarmuka aplikasi ServBay, cari versi PHP yang digunakan situs Anda, kemudian lakukan stop dan start ulang pada layanan PHP-FPM versi tersebut.
- Restart ServBay: Cara paling menyeluruh namun akan menghentikan semua layanan lokal.
- Tunggu Cache Kadaluarsa: Cara yang paling dianjurkan, khususnya jika tidak mendesak.
Langkah 4: Verifikasi Efek File .user.ini
Untuk memverifikasi setting .user.ini
sudah diterapkan, Anda bisa membuat file PHP sederhana untuk menampilkan informasi konfigurasi.
Pada direktori yang sama dengan .user.ini
(misal /Applications/ServBay/www/myproject/public
), buat file bernama info.php
dengan isi berikut:
php
<?php
phpinfo();
?>
1
2
3
2
3
Simpan file info.php
.
Lalu, akses file info.php
tersebut melalui browser di situs ServBay Anda. Jika proyek Anda menggunakan domain seperti myproject.servbay.demo
dan info.php
terletak di dalam direktori public
, maka alamat yang diakses bisa berupa https://myproject.servbay.demo/info.php
.
Di halaman phpinfo()
yang terbuka, cari instruksi yang Anda set di .user.ini
(misal upload_max_filesize
, memory_limit
, display_errors
). Akan muncul dua kolom: Master Value
dan Local Value
.
Master Value
menunjukkan nilai dariphp.ini
global.Local Value
menunjukkan nilai setting yang berlaku untuk skrip saat ini, bisa berasal dari.user.ini
atau konfigurasi server web.
Jika kolom Local Value
menampilkan nilai yang Anda set di .user.ini
(misal 20M
, 256M
, On
), maka berarti .user.ini
Anda telah efektif digunakan.
Penting: Setelah verifikasi, demi keamanan hapus atau batasi akses ke file info.php
, karena file ini menampilkan detail konfigurasi server Anda.
Penjelasan Tambahan & Hal yang Perlu Diperhatikan
- Penamaan & Lokasi File:
.user.ini
harus diberi nama persis.user.ini
dan ditempatkan pada direktori yang ingin Anda atur. Efeknya berlaku pada direktori itu dan seluruh subdirektorinya. - Mode Instruksi: Perlu diingat, hanya instruksi tertentu saja yang bisa diatur lewat
.user.ini
. Percobaan mengatur instruksi dengan modePHP_INI_SYSTEM
tidak akan berhasil dan kadang tidak memunculkan error. Lihat Panduan Manual PHP untuk kepastian. - Cache: Perhatikan setting
user_ini.cache_ttl
. Bila sering mengubah.user.ini
dan ingin efek segera terlihat, Anda bisa sementara mengatur nilai kecil diuser_ini.cache_ttl
padaphp.ini
global (misaluser_ini.cache_ttl = 5
), namun untuk produksi sebaiknya jangan terlalu kecil agar performa tidak turun. Perubahan padaphp.ini
global membutuhkan restart PHP-FPM. - Prioritas: Urutan prioritas pengaturan PHP umumnya: Default inti <
php.ini
(atau file.ini
tambahan) < konfigurasi server web (php_value
/php_flag
– jika menggunakan modul Apache/nginx) <.user.ini
< fungsiini_set()
dalam skrip. Pengaturan di.user.ini
akan menimpa nilai yang sama dariphp.ini
global, namun masih bisa ditimpa olehini_set()
di dalam kode. - Keamanan: Jangan pernah menyimpan data sensitif dalam
.user.ini
. Meski hanya memengaruhi direktori lokal, file ini tetap berada di jalur yang bisa diakses web (meski biasanya server web dikonfigurasi agar file seperti ini tidak bisa diakses langsung).
FAQ (Tanya Jawab Umum)
Q: Saya sudah membuat file .user.ini
dan menambah setting, tapi tampaknya tidak aktif. Kenapa?
A: Kemungkinan penyebabnya:
- Nama atau Lokasi File Salah: Pastikan file dinamai
.user.ini
dan berada di direktori yang benar. - Instruksi Tidak Didukung: Mungkin Anda mengatur instruksi yang tidak bisa diubah lewat
.user.ini
(mode bukanPHP_INI_USER
atauPHP_INI_PERDIR
). Cek Manual PHP. - Cache Belum Expire: Tunggu sesuai waktu yang ditentukan
user_ini.cache_ttl
(default 5 menit) atau coba restart PHP-FPM. - Kesalahan Sintaks: Cek apakah terdapat kesalahan penulisan pada
.user.ini
. - Ditimpa Prioritas Lebih Tinggi: Cek apakah ada kode yang menggunakan fungsi
ini_set()
sehingga menimpa setting Anda.
Q: Apa bedanya file .user.ini
dan file php.ini
global?
A: File php.ini
berlaku untuk seluruh environment PHP (semua aplikasi pada versi PHP tertentu). Setting dalam file ini aktif untuk seluruh skrip PHP kecuali bila ditimpa pengaturan prioritas lebih tinggi. File .user.ini
hanya berlaku untuk skrip pada direktori dan subdirektori tempat file berada, dan hanya mendukung instruksi tertentu. Keunggulan utama .user.ini
adalah fleksibilitas lokal tanpa perlu mengubah konfigurasi global.
Kesimpulan
Memanfaatkan file .user.ini
di ServBay adalah cara yang direkomendasikan untuk mengelola pengaturan PHP spesifik per proyek. Penggunaan metode ini menawarkan fleksibilitas tinggi, sehingga developer dapat mengubah environment PHP untuk memenuhi kebutuhan proyek tanpa mengganggu proyek lain atau konfigurasi global ServBay. Dengan mengikuti panduan dan contoh di artikel ini, Anda dapat dengan mudah mengatur file .user.ini
pada proyek ServBay Anda, meningkatkan efisiensi dan kemudahan dalam mengelola environment pengembangan. Filosofi desain ServBay adalah menyediakan alat pengembangan lokal yang kuat dan fleksibel bagi developer, serta dukungan optimal terhadap .user.ini
adalah salah satu manifestasinya.