Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

PHP $_ENV

บทนำ

$_ENV เป็น superglobal associative array อีกตัวหนึ่งใน PHP เก็บตัวแปรสภาพแวดล้อม (environment variables) ที่พร้อมใช้งานสำหรับสคริปต์ปัจจุบัน $HTTP_ENV_VARS ก็มีข้อมูลเดียวกัน แต่ไม่ใช่ superglobal และถูก deprecated แล้ว

ตัวแปรสภาพแวดล้อมถูกนำเข้าเข้าสู่ global namespace ส่วนใหญ่ของตัวแปรเหล่านี้ถูกให้โดย shell ที่ PHP parser รันอยู่ภายใต้ ดังนั้น รายการตัวแปรสภาพแวดล้อมอาจแตกต่างกันในแพลตฟอร์มต่างๆ

Array นี้ยังรวมตัวแปร CGI ด้วยในกรณีที่ PHP รันเป็น server module หรือ CGI processor

PHP library มีฟังก์ชัน getenv() สำหรับดึงรายการตัวแปรสภาพแวดล้อมทั้งหมด หรือค่าของตัวแปรสภาพแวดล้อมเฉพาะ

getenv

สคริปต์ต่อไปนี้แสดงค่าของตัวแปรสภาพแวดล้อมทั้งหมดที่มีอยู่

<?php $arr = getenv(); foreach ($arr as $key => $val) echo "$key=>$val "; ?>

เพื่อรับค่าของตัวแปรเฉพาะ ใช้ชื่อเป็น argument สำหรับ getenv()

ตัวอย่าง

<?php echo "Path: " . getenv("PATH"); ?>

ผลลัพธ์

เบราว์เซอร์จะแสดงผลลัพธ์คล้ายกับนี้

Path: /usr/local/bin/factor:/root/.sdkman/candidates/kotlin/current/bin:/usr/GNUstep/System/Tools:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/scriba/bin:/usr/local/smlnj/bin:/usr/local/bin/std:/usr/local/bin/extra:/usr/local/fantom/bin:/usr/local/dart/bin:/usr/libexec/sdcc:/usr/local/icon-v950/bin:/usr/local/mozart/bin:/opt/Pawn/bin:/opt/pash/Source/PashConsole/bin/Debug/:.:/root/.sdkman/candidates/kotlin/current/bin:/usr/bin:/sbin:/bin

PHP ยังมีฟังก์ชัน putenv() สำหรับสร้างตัวแปรสภาพแวดล้อมใหม่ ตัวแปรสภาพแวดล้อมจะมีอยู่เฉพาะระยะเวลาของ request ปัจจุบัน

ควรหลีกเลี่ยงการเปลี่ยนค่าตัวแปรสภาพแวดล้อมบางตัว โดยค่าเริ่มต้น ผู้ใช้จะตั้งค่าตัวแปรสภาพแวดล้อมที่ขึ้นต้นด้วย PHP_ เท่านั้น (เช่น PHP_FOO=BAR)

Directive safe_mode_protected_env_vars ใน php.ini มีรายการตัวแปรสภาพแวดล้อมที่คั่นด้วย comma ที่ผู้ใช้ปลายทางจะไม่สามารถเปลี่ยนแปลงได้ด้วย putenv()

putenv

ตัวอย่าง

<?php putenv("PHP_TEMPUSER=GUEST"); echo "Temp user: " . getenv("PHP_TEMPUSER"); ?>

ผลลัพธ์

เบราว์เซอร์จะแสดงผลลัพธ์ดังนี้

Temp user: GUEST