Rumah > pembangunan bahagian belakang > tutorial php > Mengapa pembolehubah SetEnv boleh diakses dalam kedua-dua $_ENV dan $_SERVER dalam PHP?

Mengapa pembolehubah SetEnv boleh diakses dalam kedua-dua $_ENV dan $_SERVER dalam PHP?

Patricia Arquette
Lepaskan: 2024-11-08 07:57:02
asal
1011 orang telah melayarinya

Why are SetEnv variables accessible in both $_ENV and $_SERVER in PHP?

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

  • getenv tidak peka huruf besar-kecil untuk nama pembolehubah persekitaran.
  • perintah_pembolehubah mempengaruhi susunan pembolehubah dalam $_SERVER dan $_ENV, bukan tingkah laku getenv.

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan