Cara Menggunakan Fail .user.ini di ServBay: Panduan Konfigurasi PHP Tempatan
ServBay ialah persekitaran pembangunan web tempatan yang berkuasa dan terintegrasi, direka khusus untuk pembangun serta menyokong pelbagai bahasa, versi PHP yang fleksibel, dan pilihan konfigurasi yang mudah. Dalam pembangunan sebenar, setiap projek mungkin memerlukan konfigurasi PHP yang berbeza, seperti had saiz muat naik fail, had memori, atau tahap laporan ralat. Mengubah suai fail php.ini global akan menjejaskan semua projek, yang boleh menyukarkan pengurusan berbilang projek.
Mujurlah, PHP menyediakan mekanisme fail .user.ini yang membolehkan pembangun mentakrifkan tetapan PHP khusus dalam direktori tertentu serta subdirektorinya, tanpa perlu mengubah php.ini global. ServBay menyokong sepenuhnya .user.ini, membolehkan anda melaraskan konfigurasi PHP untuk setiap projek atau direktori dengan mudah dan berkesan.
Artikel ini akan menerangkan secara terperinci prinsip kerja fail .user.ini, cara menggunakannya dalam ServBay, dan memberi contoh bagaimana menetapkan konfigurasi PHP khusus untuk projek anda.
Pengenalan kepada Fail .user.ini
Fail .user.ini adalah ciri yang diperkenalkan sejak PHP 5.3.0 untuk menawarkan kaedah yang lebih fleksibel dan selamat berbanding menggunakan php_value dan php_flag dalam konfigurasi pelayan web (seperti .htaccess pada Apache) untuk menetapkan parameter PHP. Anda boleh meletakkan fail .user.ini dalam direktori web yang boleh diakses, dan konfigurasi di dalamnya hanya terpakai kepada skrip PHP dalam direktori tersebut serta subdirektorinya.
Ciri Utama
- Lingkungan Setempat: Arah konfigurasi dalam
.user.inihanya berkuatkuasa dalam direktori dan subdirektori di mana fail tersebut diletakkan, tanpa menjejaskanphp.iniglobal ServBay atau projek lain. - Fleksibiliti Tinggi: Anda boleh menentukan seting PHP yang berbeza untuk setiap projek, mengikut keperluan khusus mereka.
- Mudah Diurus: Tiada keperluan untuk mengubah konfigurasi global pelayan atau fail PHP, sekali gus mengurangkan risiko konflik konfigurasi dan meningkatkan kebolehgunaan semula serta mudah alih setiap projek.
- Tidak Perlu Mulakan Semula: Tidak seperti pengubahsuaian pada
php.iniyang biasanya memerlukan PHP-FPM atau pelayan web dimulakan semula, perubahan pada.user.iniakan berkuatkuasa secara automatik selepas tempoh masa cache yang ditetapkan olehuser_ini.cache_ttl(kebiasaannya 300 saat atau 5 minit secara lalai).
Arah Konfigurasi yang Dibenarkan
Tidak semua arahan konfigurasi PHP boleh disetkan melalui .user.ini. Ini bergantung pada "Changeable Modes" bagi setiap arahan tersebut. Hanya arahan dengan mod PHP_INI_USER, PHP_INI_PERDIR, atau PHP_INI_ALL boleh dimasukkan dalam fail .user.ini.
Beberapa arahan biasa yang boleh disetkan dalam .user.ini adalah:
upload_max_filesizepost_max_sizememory_limitdisplay_errorslog_errorsmax_execution_timesession.save_pathdate.timezone
Arah dengan mod PHP_INI_SYSTEM (contohnya extension_dir, zend_extension, disable_functions dan lain-lain) tidak boleh ditetapkan dalam .user.ini dan hanya boleh ditetapkan pada php.ini utama atau konfigurasi pelayan web.
Untuk rujukan mode boleh ubah setiap arahan, sila rujuk manual PHP mengenai arahan konfigurasi php.ini.
Cara Menggunakan .user.ini dalam ServBay
Langkah menggunakan fail .user.ini di ServBay adalah sangat mudah. Berikut ialah panduan langkah demi langkah, menggunakan penetapan upload_max_filesize dan memory_limit sebagai contoh.
Katakan direktori root laman web anda terletak di laluan lalai ServBay: /Applications/ServBay/www/ dan anda ingin menetapkan konfigurasi PHP khusus untuk projek anda bernama myproject pada direktori root webnya iaitu /Applications/ServBay/www/myproject/public.
Langkah 1: Tentukan Direktori Sasaran
Pertama sekali, tentukan direktori di mana anda ingin menggunakan konfigurasi PHP tersuai. Biasanya, ini ialah direktori root projek yang berfungsi sebagai root pelayan web (seperti direktori public dalam projek Laravel atau Symfony), atau subdirektori tertentu yang memerlukan konfigurasi khas.
Contoh: /Applications/ServBay/www/myproject/public
Langkah 2: Cipta atau Edit Fail .user.ini
Dalam direktori sasaran ini, cipta fail baru dinamakan .user.ini (jika sudah ada, kemaskini fail tersebut). Perlu diingat, fail yang bermula dengan titik selalunya tersembunyi dalam sistem fail – pastikan pengurus fail anda dipasang untuk memaparkan fail tersembunyi.
Anda boleh mencipta fail melalui terminal:
bash
cd /Applications/ServBay/www/myproject/public
touch .user.ini1
2
2
Kemudian buka .user.ini dalam editor teks dan tambah arahan PHP yang anda perlukan, satu baris setiap arahan. Contohnya:
ini
; Tetapkan saiz maksimum muat naik fail kepada 20MB
upload_max_filesize = 20M
; Tetapkan had memori skrip PHP kepada 256MB
memory_limit = 256M
; Aktifkan paparan ralat (disyorkan hanya untuk pembangunan)
display_errors = On1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Simpan dan tutup fail .user.ini.
Langkah 3: Tunggu Konfigurasi Berkuatkuasa atau Paksa Muat Semula
Perubahan pada fail .user.ini tidak akan berkuatkuasa serta-merta kerana PHP mem-cache fail ini untuk prestasi yang lebih baik. Secara lalai, tetapan user_ini.cache_ttl mengawal berapa lama cache ini kekal (kebiasaannya 300 saat/5 minit).
Jika anda ingin melihat perubahan serta-merta, boleh cuba cara berikut (kejayaan mungkin bergantung kepada versi dan konfigurasi ServBay yang anda guna):
- Mulakan semula proses PHP-FPM yang berkaitan: Dalam app ServBay, cari versi PHP yang digunakan laman anda, cuba henti dan mulakan semula servis PHP-FPM bagi versi tersebut.
- Mulakan semula ServBay: Ini cara paling menyeluruh, tetapi ia akan mengganggu semua servis tempatan buat sementara waktu.
- Tunggu cache tamat: Ini adalah cara yang paling disyorkan terutamanya untuk perubahan yang tidak segera.
Langkah 4: Sahkan Keberkesanan Fail .user.ini
Untuk memastikan sama ada perubahan dalam .user.ini telah diterapkan, anda boleh cipta satu fail PHP ringkas untuk memaparkan info konfigurasi PHP.
Di direktori yang sama di mana anda letakkan .user.ini (contohnya /Applications/ServBay/www/myproject/public), cipta fail bernama info.php dengan kandungan berikut:
php
<?php
phpinfo();
?>1
2
3
2
3
Simpan fail info.php.
Kemudian, layari fail info.php tersebut melalui browser menggunakan akaun domain ServBay untuk projek anda. Contohnya, jika domain yang ditetapkan ServBay ialah myproject.servbay.demo dan info.php berada dalam public, maka alamatnya mungkin seperti https://myproject.servbay.demo/info.php.
Dalam halaman phpinfo(), cari arahan yang anda sudah tetapkan dalam .user.ini (contoh: upload_max_filesize, memory_limit, display_errors). Anda akan melihat dua lajur: Master Value dan Local Value.
Master Valueialah nilai daripadaphp.iniglobal.Local Valueialah nilai semasa bagi skrip tersebut, yang mungkin datang dari.user.iniatau konfigurasi pelayan web.
Jika Local Value menunjukkan nilai yang anda tetapkan dalam .user.ini (seperti 20M, 256M, On), maka fail anda telah berjaya diterapkan.
Peringatan Penting: Selepas pengesahan, sila padam atau hadkan akses kepada info.php kerana fail ini boleh mendedahkan maklumat konfigurasi pelayan anda.
Nota Tambahan dan Perhatian
- Penamaan dan Lokasi Fail: Pastikan fail dinamakan tepat sebagai
.user.inidan diletakkan dalam direktori di mana anda mahu konfigurasi digunakan. Ia akan terpakai pada direktori tersebut dan semua subdirektorinya. - Mod Arah: Hanya arahan dengan mod tertentu (seperti yang dibincangkan di atas) yang boleh digunakan dalam
.user.ini. Jika anda cuba menetapkan arahan modPHP_INI_SYSTEM, ia tidak akan berkuatkuasa dan biasanya tiada ralat dipaparkan. Rujuk Manual PHP. - Cache: Perhatikan nilai
user_ini.cache_ttl. Jika kerap mengemaskini.user.inidan ingin kesan segera, boleh sementara tetapkan nilai ini lebih rendah dalamphp.iniglobal (contoh:user_ini.cache_ttl = 5), tetapi ia tidak digalakkan untuk persekitaran produksi kerana boleh jejaskan prestasi. Setiap perubahan padaphp.inimemerlukan servis PHP-FPM dimulakan semula. - Keutamaan: Urutan keutamaan konfigurasi PHP ialah: Nilai lalai <
php.ini(atau fail.initambahan) < Konfigurasi pelayan web (php_value/php_flagpada Apache/nginx) <.user.ini< panggilan fungsiini_set()dalam skrip. Nilai dalam.user.iniakan menindih tetapan yang sama dariphp.ini, tetapi boleh pula ditindih olehini_set()pada kod skrip. - Keselamatan: Elakkan menyimpan maklumat sensitif dalam
.user.iniwalaupun ia hanya berfungsi untuk direktori setempat, kerana fail ini terletak dalam laluan akses web (walaupun lazimnya tidak diakses secara terus).
Soalan Lazim (FAQ)
S: Saya sudah cipta fail .user.ini dan masukkan tetapan, tapi ia seolah-olah tidak beri kesan. Mengapa?
J: Beberapa punca biasa ialah:
- Nama atau lokasi fail
.user.inisalah: Pastikan fail dinamakan tepat dan diletakkan dalam direktori yang betul. - Mod arahan tidak disokong: Anda mungkin cuba menetapkan arahan yang tidak disokong dalam
.user.ini(lihat mod pada Manual PHP). - Cache belum tamat tempoh: Tunggu mengikut masa yang ditetapkan oleh
user_ini.cache_ttl(biasanya 5 minit) atau cuba mulakan semula servis PHP-FPM. - Ralat sintaks: Periksa ada kesalahan sintaks dalam
.user.ini. - Ditindih oleh keutamaan lebih tinggi: Semak jika ada fungsi
ini_set()dalam skrip yang menindih tetapan anda.
S: Apakah perbezaan utama antara fail .user.ini dan php.ini global?
J: Fail php.ini global menjejaskan seluruh persekitaran PHP (atau untuk semua aplikasi satu versi PHP), dan tetapan di dalamnya terpakai pada semua skrip PHP kecuali jika ditindih oleh konfigurasi lain yang lebih tinggi keutamaan. Fail .user.ini hanya berkesan dalam direktori serta subdirektori tempat ia diletakkan, dan hanya untuk arahan dengan mod tertentu. Kelebihan utama .user.ini ialah fleksibilitinya bagi konfigurasi setempat, tanpa mengubah suai konfigurasi global.
Rumusan
Menggunakan fail .user.ini dalam ServBay ialah cara terbaik untuk mengurus tetapan PHP khusus projek. Ia menawarkan fleksibiliti maksimum, membolehkan pembangun menyesuaikan sekitaran PHP setiap projek tanpa menjejaskan projek lain atau konfigurasi ServBay global. Dengan panduan dan contoh di atas, anda kini boleh menggunakan fail .user.ini secara lebih cekap dalam projek ServBay anda, sekaligus meningkatkan kecekapan pembangunan serta kemudahan pengurusan sekitaran. ServBay direka untuk memberikan alat pembangunan tempatan yang kuat dan fleksibel kepada pembangun – dan sokongan menyeluruh terhadap .user.ini adalah sebahagian daripada falsafah tersebut.
