【问题标题】:Setting environment variables for accessing in PHP when using Apache使用 Apache 时在 PHP 中设置用于访问的环境变量
【发布时间】:2012-06-09 18:33:36
【问题描述】:

我有一个 Linux 环境,我有一个 PHP Web 应用程序,它基于环境变量在 PHP 中使用 getenv 有条件地运行。我需要知道如何设置这些环境变量以使应用程序正常工作。我不确定如何在 Apache 上进行设置。

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

请就我如何实现这一点提出建议。

【问题讨论】:

标签: php apache ubuntu environment-variables


【解决方案1】:

如果你的服务器是 Ubuntu 并且 Apache 版本是 2.4

服务器版本:Apache/2.4.29 (Ubuntu)

然后你在/etc/apache2/envvars位置导出变量。

就像下面这行,你需要在/etc/apache2/envvars中多加一行

export MY_ENV_NAME=myEnvValue

【讨论】:

  • 如果您来这个问题是为了 LAMP 堆栈,这可能就是您想要使用的。顺便说一句,答案很好!
【解决方案2】:

难以置信,但在 centos 6.4 上的 httpd 2.2 上可以正常工作。

/etc/sysconfig/httpd中导出环境变量

export mydocroot=/var/www/html

然后简单地这样做......

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

最后……

service httpd restart;

【讨论】:

    【解决方案3】:

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

    SetEnv KOHANA_ENV production
    

    您只需添加到 .htaccess 即可添加环境变量

    【讨论】:

    • 这与使用 .env 文件(例如 laravel 的方式)有什么不同?这是否会降低安全性?我问这个是因为我正在使用多个框架(laravel、express、django 等)构建相同的后端结构,并且这些其他语言的一些开发人员说它不适合使用 .env 并且“服务器配置”应该是改为使用,或通过命令行执行,heroku 样式
    【解决方案4】:

    类似的东西:

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

    【讨论】:

    • 不在我的 $_ENV 数组中,要检索值,请参阅:stackoverflow.com/questions/2378871/…
    • @i_a 你可以使用getenv('VARIABLE_NAME')访问PHP中的值
    • 在 Windows 上的 xampp 中,文件将为 C:\xampp\apache\conf\extra\httpd-vhosts.conf
    • @i_a 在我的机器上,该值也可以在$_SERVER 变量中找到。
    • 如果您不想更改 vhost.conf,也可以使用 IncludeIncludeOptional
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    相关资源
    最近更新 更多