Rumah > Artikel > pembangunan bahagian belakang > Mengapa Array $_ENV Saya Kosong dalam PHP, Walaupun Saya Tetapkan Pembolehubah Persekitaran dalam .htaccess?
Apabila bekerja dengan PHP dan Apache, seseorang mungkin menghadapi situasi yang membingungkan di mana tatasusunan superglobal $_ENV kekal kosong walaupun menetapkan pembolehubah persekitaran dalam fail .htaccess. Artikel ini menyelidiki sebab di sebalik tingkah laku ini dan menawarkan cerapan tentang keanehan pembolehubah persekitaran dalam Apache dan PHP.
Tidak seperti superglobal lain (mis., $_GET, $_POST), $_ENV tidak diisi secara automatik oleh PHP. Ia memerlukan konfigurasi eksplisit dalam fail php.ini. Arahan variables_order mengawal tatasusunan superglobal mana yang dimulakan apabila PHP dimulakan, dan secara lalai, ia mengecualikan $_ENV.
Untuk mendayakan $_ENV, seseorang perlu mengubah suai tetapan variables_order dalam php.ini atau fail .htaccess. Menetapkannya kepada "EGPCS" atau "GPCS" termasuk $_ENV dalam proses populasi.
Apabila menggunakan SetEnv dalam .htaccess, pembolehubah persekitaran berakhir dalam $_SERVER, bukan $_ENV. Percanggahan ini boleh dikaitkan dengan cara Apache mengendalikan pembolehubah persekitaran. Ia menyimpannya dalam struktur dalaman yang kemudiannya disediakan untuk skrip PHP. Atas sebab warisan, SetEnv menyimpan pembolehubah di lokasi yang diakses oleh $_SERVER.
Penduaan pembolehubah persekitaran dalam $_SERVER ialah artifak gelagat Apache. Apabila SetEnv digunakan dalam .htaccess, nilai sebelumnya bagi pembolehubah persekitaran tidak ditimpa tetapi ditambah sebagai entri lain dengan kunci yang berbeza, diawali dengan REDIRECT_. Ini adalah kebiasaan sejarah Apache, yang mengubah pembolehubah persekitaran semasa pemprosesan permintaan disokong dengan menambahkan pembolehubah yang diubah suai pada set pembolehubah persekitaran.
Walaupun $_ENV mungkin tidak selalu diisi, terdapat cara lain untuk mengakses pembolehubah persekitaran dalam PHP. Fungsi getenv() mendapatkan semula pembolehubah persekitaran terus daripada sistem pengendalian, tanpa mengira konfigurasi PHP atau lokasi pembolehubah persekitaran dalam struktur Apache. Ia membenarkan pengambilan pembolehubah yang tidak peka huruf besar-besaran, menjadikannya alternatif untuk mengakses pembolehubah yang disimpan dalam $_SERVER.
Memahami selok-belok pembolehubah persekitaran dalam Apache dan PHP adalah penting untuk menyelesaikan masalah dan bekerja dengan berkesan dengan pembolehubah ini. Kekosongan $_ENV boleh diselesaikan dengan mengkonfigurasi tetapan variables_order, dan kelakuan tidak konvensional SetEnv boleh ditampung dengan menggunakan $_SERVER atau getenv(). Dengan memahami konsep ini, pembangun boleh memanfaatkan kuasa pembolehubah persekitaran untuk meningkatkan aplikasi PHP mereka.
Atas ialah kandungan terperinci Mengapa Array $_ENV Saya Kosong dalam PHP, Walaupun Saya Tetapkan Pembolehubah Persekitaran dalam .htaccess?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!