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
959 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!

sumber:php.cn
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