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.ini
hanya berkuatkuasa dalam direktori dan subdirektori di mana fail tersebut diletakkan, tanpa menjejaskanphp.ini
global 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.ini
yang biasanya memerlukan PHP-FPM atau pelayan web dimulakan semula, perubahan pada.user.ini
akan 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_filesize
post_max_size
memory_limit
display_errors
log_errors
max_execution_time
session.save_path
date.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.ini
1
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 = On
1
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 Value
ialah nilai daripadaphp.ini
global.Local Value
ialah nilai semasa bagi skrip tersebut, yang mungkin datang dari.user.ini
atau 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.ini
dan 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.ini
dan ingin kesan segera, boleh sementara tetapkan nilai ini lebih rendah dalamphp.ini
global (contoh:user_ini.cache_ttl = 5
), tetapi ia tidak digalakkan untuk persekitaran produksi kerana boleh jejaskan prestasi. Setiap perubahan padaphp.ini
memerlukan servis PHP-FPM dimulakan semula. - Keutamaan: Urutan keutamaan konfigurasi PHP ialah: Nilai lalai <
php.ini
(atau fail.ini
tambahan) < Konfigurasi pelayan web (php_value
/php_flag
pada Apache/nginx) <.user.ini
< panggilan fungsiini_set()
dalam skrip. Nilai dalam.user.ini
akan menindih tetapan yang sama dariphp.ini
, tetapi boleh pula ditindih olehini_set()
pada kod skrip. - Keselamatan: Elakkan menyimpan maklumat sensitif dalam
.user.ini
walaupun 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.ini
salah: 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.