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.inihanya berlaku di direktori tempat file berada dan seluruh subdirektorinya, tanpa memengaruhi pengaturan globalphp.iniServBay 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.iniyang biasanya mengharuskan restart PHP-FPM atau server web, perubahan pada file.user.iniumumnya 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_filesizepost_max_sizememory_limitdisplay_errorslog_errorsmax_execution_timesession.save_pathdate.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.ini1
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 = On1
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 Valuemenunjukkan nilai dariphp.iniglobal.Local Valuemenunjukkan nilai setting yang berlaku untuk skrip saat ini, bisa berasal dari.user.iniatau 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.iniharus diberi nama persis.user.inidan 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_SYSTEMtidak akan berhasil dan kadang tidak memunculkan error. Lihat Panduan Manual PHP untuk kepastian. - Cache: Perhatikan setting
user_ini.cache_ttl. Bila sering mengubah.user.inidan ingin efek segera terlihat, Anda bisa sementara mengatur nilai kecil diuser_ini.cache_ttlpadaphp.iniglobal (misaluser_ini.cache_ttl = 5), namun untuk produksi sebaiknya jangan terlalu kecil agar performa tidak turun. Perubahan padaphp.iniglobal membutuhkan restart PHP-FPM. - Prioritas: Urutan prioritas pengaturan PHP umumnya: Default inti <
php.ini(atau file.initambahan) < konfigurasi server web (php_value/php_flag– jika menggunakan modul Apache/nginx) <.user.ini< fungsiini_set()dalam skrip. Pengaturan di.user.iniakan menimpa nilai yang sama dariphp.iniglobal, 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.inidan berada di direktori yang benar. - Instruksi Tidak Didukung: Mungkin Anda mengatur instruksi yang tidak bisa diubah lewat
.user.ini(mode bukanPHP_INI_USERatauPHP_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.
