PHP设置全局环境变量的方法

2024-06-19

我已阅读问题/答案here https://stackoverflow.com/questions/13568191/how-to-get-system-environment-variables-into-php-while-running-cli-apache2hand#_=_但我不明白如何设置变量/etc/环境。如果我编辑该文件,我是否需要重新启动计算机或仅注销当前用户(或登录新用户?)。

我想设置一个全局变量来表示我的计算机上的网站处于“开发”或“测试”模式。我不想为每个项目都设置这个(无论是使用 PHP、Java/Tomcat、NodeJS 等)。我知道(对于 Apache)我可以通过以下方式设置环境变量:

  1. 直接从 php 使用putenv()(这似乎没用,因为我想避免试图找出文件所在服务器的逻辑)
  2. 使用.htaccessSetEnv ENVIRONMENT 'local'(这需要我为每个服务器复制此文件/代码,这并不理想)
  3. 使用虚拟主机指令SetEnv ENVIRONMENT 'local'(如果我使用虚拟主机,几乎在所有情况下我都是这样,但再次要求我一遍又一遍地复制/粘贴代码)
  4. 在 httpd-conf 中SetEnv ENVIRONMENT 'local'(这只适用于 apache,我希望它也适用于 NodeJS 服务器)

我并不是说我不能执行#4(并有选择地将#3 应用于 NodeJS 服务器)。但我认为这是使用 /etc/environment 的一个很好的理由。正如我上面所说,我已经编辑了该文件(在第一次创建它之后)并尝试了以下组合,但似乎都不起作用:

ENVIRONMENT='local'
ENVIRONMENT=local
export ENVIRONMENT='local'
export ENVIRONMENT=local

我说它们都不起作用,因为我在输出中没有找到变量:

print_r($_SERVER);
print_r($_ENV);
echo(getenv('ENVIRONMENT'));

您想要做的是使用 Apache 配置文件。您将需要访问配置文件夹和 httpd.conf 文件(或修改版本)。然后,您可以使用此方法配置 httpd.conf 以动态加载配置文件

Include conf.d/*.conf

在 conf.d 文件夹中放置特定的环境配置文件。

server-environment-dev.conf 示例:

SetEnv ENVIRONMENT "local"

server-environment-prod.conf 示例:

SetEnv ENVIRONMENT "production"

这些设置将作为可用环境变量显示在您的 php 代码中。这种方法允许您保持虚拟主机文件、.htaccess 和其他配置文件与环境无关。

由于某些进程/用户限制,Apache 中的 PHP 无法读取 etc/environment、etc/profile.d、.bash_profile、.profile 等文件。您可以根据需要对变量进行 bash、smash、crash,并在终端中查看它们的设置,但它们不会显示在 phpinfo() 中,除非您通过 Apache 配置文件之一进行设置。

对于 NodeJS,您可以启动应用程序并传入环境变量,或者您可以通过多种方式设置 NODE_ENV,包括您的 .bash_profile 以及可能的 etc/environment 文件(如果您想与用户无关)。

Node 的好读物:http://www.hacksparrow.com/running-express-js-in-product-mode.html http://www.hacksparrow.com/running-express-js-in-production-mode.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP设置全局环境变量的方法 的相关文章

  • 在 LAMP 配置中创建个性化 URL

    在 LAMP 配置下创建用户个性化 URL 的最佳方法是什么 例如 可以按如下方式访问用户个人资料页面 http www website com profile php id 1 http www website com profile p
  • 使用表单传递数组和用户输入

    我在处理传递数组的表单时遇到困难 我在名为 product 的数组中包含了 5 个变量 a b c d e 然后将其传递到另一个框架使用表单以及需要用户输入值的输入 所以会同时传递一个数组和一个输入 那么我应该使用 post 还是 get
  • .htaccess 301 将所有 https 重定向到 http(一页除外)

    这是我当前在 htaccess 文件中的代码 Options FollowSymLinks RewriteEngine on RewriteBase RewriteCond HTTP HOST example com NC RewriteR
  • 有没有一种简单的方法来获取 PHP 中实例化类的文件?

    我想复制这个 myObject new object FILE class object protected path to caller public function construct file this gt path to cal
  • DB_DEBUG 设置为 FALSE 的数据库连接设置

    我正在尝试连接到我的数据库 但收到以下消息 无法使用提供的设置连接到数据库服务器 文件名 core Loader php 线路号码 346 所以在阅读了很多之后 我发现在数据库连接中将 db default db debug 设置为 FAL
  • PHP:使用 imagemagick 将图像转换为 TIFF

    我正在尝试使用 imagemagick 将图像转换为 tiff 但在尝试写入文件时遇到问题 我收到一条错误消息 无法打开图片 错误 blob c OpenBlob 2584 这是我正在使用的代码 im2 new Imagick image
  • yii::app()->user->setState 在 yii 中?

    我想知道 yii 中的这个 Yii app gt user gt setState key value 如果我有一个大小为 10 的数组 并且我将该数组设置为如下状态 Yii app gt user gt setState data dat
  • 在通过 AJAX 响应发送的页面上执行 javascript 函数

    我想执行一个从服务器通过 AJAX 请求发送的函数 函数体不在调用页面中 例如 完整代码如下 1 调用PHP脚本
  • PHPUnit 测试套件包含路径

    使用 phpunit 时 我在包含路径方面遇到了一些麻烦 不是针对 phpunit 本身 而是针对我的代码和测试目录 我有以下代码结构 Application StringCalculator php tests StringCalcula
  • magento 中的自动发票

    我创建了新的自定义产品类型 它扩展了 magento 中的虚拟产品 现在我想阻止在线支付的自动发票 例如 当订单包含至少一种自定义产品类型时 使用 Paypal 所有包含此类产品的订单都必须手动开具发票 我应该如何解决这个问题 最好的方法是
  • CodeIgniter“找不到您请求的页面。”错误?

    我在使用 CodeIgniter 时遇到问题 我已经检查了互联网上所有可能的解决方案 似乎对我的情况没有任何帮助 我不是一个大专业人士 这是我第一次使用 CodeIgniter 所以不要对我严厉 路线 php route default c
  • 用于提取 FDF 数据的 PHP 正则表达式代码

    我正在尝试使用 PHP 和正则表达式解析 FDF 文件 但我就是无法理解正则表达式 我一直在解析文件以生成数组 FDF 1 2 1 0 obj lt lt FDF lt lt Fields lt lt V email protected c
  • 对模型使用 Zend_Autoloader

    有人知道如何使用 新 Zend Autoloader 来加载模型吗 目前我的配置如下所示 应用程序 ini Autoloader Namespace autoloadernamespaces 0 Sl Bootstrap php Start
  • JSON数据通过JS/AJAX转化为PHP

    Goal 我正在使用 coinmarketcap com API link https api coinmarketcap com v1 ticker convert EUR 预先我将他们的数据转换成 PHP 样本 现在我想使用AJAX J
  • >> 在 PHP 中是什么意思?

    考虑 echo 50 gt gt 4 Output 3 为什么输出3呢 50 的二进制是11 0010 右移 4 次11等于 3 See PHP 文档 http php net manual en language operators bi
  • Aptana PHP Formatter - 使用自定义格式规则

    我在 PHP 文档中使用 Apatana 的格式化功能 它运行良好 但它转换的数组除外 data array email gt params email username gt params username 进入这个 data array
  • 接口实现:声明必须兼容

    我有界面 interface AbstractMapper public function objectToArray ActiveRecordBase object 和课程 class ActiveRecordBase class Pro
  • 如何使用存储过程 SQL SERVER 2008 R2(mssql) 插入 PHP 数组值

    我有这个数组 REV Array 0 gt 240 1 gt 241 2 gt 242 3 gt 243 4 gt 249 我现在使用下面的代码进行插入 将每个数组的元素存储在带有 id userID Type 和 Date 的行中 if
  • 重定向后丢失会话变量

    用户填写用户名和密码 如果正确 页面会加载一些信息 例如user id到会话变量 该脚本制作了一个header Location 重定向 不知何故 下一页无法识别会话 怎么会 重定向到同一个域 并且所有页面都有session start 我
  • 通过 XMLHttpRequest 将数据从 JavaScript 发送到 PHP

    再会 我正在尝试将一段简单的数据从一个 php 文件 manage php 发送到另一个 view php 我无法通过表单发送数据 我想通过 JS 脚本发送数据 这是我的尝试 var read function id xmlhttp new

随机推荐