Pembolehubah Alam Sekitar dalam PHP: Memahami SetEnv, $_ENV dan $_SERVER
Dalam Apache, pembolehubah persekitaran FOO ditetapkan menggunakan SetEnv arahan dalam fail .htaccess. Walau bagaimanapun, PHP boleh memaparkan pembolehubah ini sama ada dalam $_ENV atau $_SERVER. Mengapa ini berlaku dan apakah yang menyebabkan entri kompleks dalam $_SERVER?
Kosongkan Pembolehubah $_ENV
Secara lalai, pembolehubah $_ENV PHP kekal kosong melainkan arahan variables_order dalam php.ini termasuk E. Ini biasanya tidak didayakan dalam persekitaran pengeluaran kerana kebimbangan prestasi. Untuk menyelesaikannya, tetapkan variables_order kepada EGPCS, yang menjadikan $_ENV boleh diakses.
SetEnv dalam $_SERVER
Kekeliruan timbul apabila menggunakan SetEnv dalam .htaccess, kerana ia meletakkan pembolehubah dalam $_SERVER, bukan $_ENV. Tingkah laku ini tidak intuitif dan boleh menyebabkan salah faham.
Entri dalam $_SERVER
SetEnv boleh mengakibatkan entri pendua dalam $_SERVER, seperti [REDIRECT_FOO] dan [FOO ]. Ini berlaku kerana SetEnv mencipta pembolehubah persekitaran biasa (FOO) dan alias ubah hala (REDIRECT_FOO`).
Alternatif Fungsi getenv
Fungsi getenv sentiasa tersedia untuk mendapatkan semula pembolehubah persekitaran, tanpa mengira tetapan PHP untuk $_ENV. Adalah disyorkan untuk menggunakan getenv jika anda menghadapi masalah dengan $_ENV.
Nota Tambahan
Atas ialah kandungan terperinci Mengapa pembolehubah SetEnv boleh diakses dalam kedua-dua $_ENV dan $_SERVER dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!