设置环境变量以在使用Apache时在PHP中进行访问


104

我有一个Linux环境,并且有一个PHP Web应用程序,该程序有条件地基于getenvPHP中使用的环境变量运行。我需要知道如何为应用程序正确设置这些环境变量。我不确定如何在Apache上进行设置。

另外,我需要能够为每个域分别配置单独的环境变量。

请提供有关如何实现此目标的建议。


Answers:


159

大致情况:

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

3
是不是在我的$ _ENV数组,程序来检索值看:stackoverflow.com/questions/2378871/...
I_A

非常感谢你!
Omran Shagooj '16

4
@i_a您可以使用getenv('VARIABLE_NAME')
BeetleJuice

在Windows的xampp中,文件将为C:\ xampp \ apache \ conf \ extra \ httpd-vhosts.conf
Dung

@i_a在我的机器上,该值也可以在$_SERVER变量中找到。
罗布施

28

您也可以在.htaccess文件中执行此操作,前提是它们已在网站上启用。

SetEnv KOHANA_ENV production

您将需要添加到.htaccess文件中以添加环境变量


这与使用.env文件(例如laravel这样做)有什么不同吗?这会使它的安全性降低吗?我之所以这样问,是因为我正在使用多个框架(laravel,express,django等)构建相同的后端结构,并且那些其他语言的一些开发人员说,不适合使用.env,并且“服务器配置”应为改为使用,或通过命令行使用heroku风格
-OzzyTheGiant

8

令人难以置信,但在centos 6.4上的httpd 2.2上可行。

导出环境变量 /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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.