การตั้งค่าตัวแปรสภาพแวดล้อมสำหรับการเข้าถึงใน PHP เมื่อใช้ Apache


106

ฉันมีระบบ Linux และฉันมีเว็บแอปพลิเคชัน PHP ที่ทำงานตามเงื่อนไขตามตัวแปรสภาพแวดล้อมที่ใช้getenvใน PHP ฉันต้องการทราบว่าต้องตั้งค่าตัวแปรสภาพแวดล้อมเหล่านี้อย่างไรเพื่อให้แอปพลิเคชันทำงานได้อย่างถูกต้อง ฉันไม่แน่ใจว่าจะตั้งค่าบน Apache อย่างไร

นอกจากนี้ฉันต้องสามารถกำหนดค่าตัวแปรสภาพแวดล้อมแยกกันสำหรับแต่ละโดเมนแยกกัน

โปรดให้คำแนะนำว่าฉันจะบรรลุเป้าหมายนี้ได้อย่างไร


คำตอบ:


161

บางสิ่งบางอย่างตามแนว:

<VirtualHost hostname:80>
   ...
   SetEnv VARIABLE_NAME variable_value
   ...
</VirtualHost>

3
ไม่ได้อยู่ในอาร์เรย์ $ _ENV ของฉันสำหรับการเรียกคืนค่าโปรดดู: stackoverflow.com/questions/2378871/…
i_a

ขอบคุณมาก!
Omran Shagooj

5
@i_a คุณสามารถเข้าถึงค่าใน PHP ด้วยgetenv('VARIABLE_NAME')
BeetleJuice

ใน xampp บน windows ไฟล์จะเป็น C: \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf
Dung

@i_a บนเครื่องของฉันค่านี้ยังสามารถพบได้ใน$_SERVERตัวแปร
robsch

28

คุณยังสามารถทำได้ในไฟล์. htaccess โดยสมมติว่าเปิดใช้งานบนเว็บไซต์

SetEnv KOHANA_ENV production

เพียงแค่เพิ่ม. htaccess เพื่อเพิ่มตัวแปรสภาพแวดล้อม


สิ่งนี้แตกต่างจากการใช้ไฟล์. env เช่นวิธีที่ laravel ทำสิ่งนี้หรือไม่ วิธีนี้ทำให้มีความปลอดภัยน้อยลงหรือไม่? ฉันถามสิ่งนี้เพราะฉันกำลังสร้างโครงสร้างแบ็กเอนด์เดียวกันกับหลายเฟรมเวิร์ก (laravel, express, django ฯลฯ ) และนักพัฒนาบางคนของภาษาอื่น ๆ เหล่านั้นบอกว่า 'ไม่เหมาะสมที่จะใช้. env และ "เซิร์ฟเวอร์ config" ควรจะเป็น ใช้แทนหรือทำผ่านบรรทัดคำสั่งสไตล์
heroku

8

ไม่น่าเชื่อ แต่บน httpd 2.2 บน centos 6.4 ใช้งานได้

ส่งออก env vars ใน /etc/sysconfig/httpd

export mydocroot=/var/www/html

จากนั้นทำสิ่งนี้ ...

<VirtualHost *:80>
  DocumentRoot ${mydocroot}
</VirtualHost>

แล้วในที่สุด ....

service httpd restart;

4

หากเซิร์ฟเวอร์ของคุณเป็น Ubuntu และ Apache เวอร์ชัน 2.4

เวอร์ชันเซิร์ฟเวอร์: Apache / 2.4.29 (Ubuntu)

จากนั้นคุณส่งออกตัวแปรในตำแหน่ง "/ etc / apache2 / envvars"

เช่นเดียวกับบรรทัดด้านล่างนี้คุณต้องเพิ่มบรรทัดพิเศษใน "/ etc / apache2 / envvars" export GOROOT = / usr / local / go

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.