如何在EC2实例上使用PHP设置和检索环境变量
如何在EC2实例上使用PHP设置和检索环境变量
我在尝试在我的EC2实例中设置环境变量,并用php检索它们时遇到了问题。
我有一个运行Bitnami WordPress网站的EC2实例。我通过ssh登录到服务器并在/etc/environment中添加了环境变量:
export VARIABLE_NAME=example_value
在前端中,我使用以下php代码来检索该值:
$env_var = $_ENV["VARIABLE_NAME"];
但它返回空白。
我还尝试过以下代码:
$env_var = array('environment' => getenv("VARIABLE_NAME"));
但它只返回{environment: false}。
非常感谢任何帮助。
问题的原因是当作者重新启动apache服务器时,它会将.htaccess文件覆盖为默认状态,导致作者所做的所有更改都会消失。
解决方法是将环境变量添加到wp-config.php文件中,并使用define('ENV_VARIABLE','VALUE');
将其定义。然后,可以通过$value = ENV_VARIABLE;
来使用该值。
作者提到不理解为什么在重新启动时Apache会覆盖.htaccess文件,这没有道理。此外,在对htaccess文件进行更改时,并不需要重新启动Apache。
问题的原因是在EC2实例上设置环境变量时,将其写入.htaccess文件,但在重新启动Apache后,环境变量会从.htaccess文件中消失。
解决方法是将环境变量直接设置在EC2实例的环境中,而不是通过.htaccess文件。以下是解决方法:
1. 登录到EC2实例。
2. 打开终端或SSH客户端。
3. 输入以下命令将环境变量添加到实例环境中:
export DBL="mysql:dbname=rocknroll;host=rocknroll.local;port=3306" export DB_USER="Elvis" export DB_PASS="1amth3K1ng"
4. 保存并关闭终端或SSH客户端。
5. 在PHP文件中使用以下代码来检索环境变量:
define('DBL', getenv('DBL')); define('USER', getenv('DB_USER')); define('PASS', getenv('DB_PASS'));
通过将环境变量直接设置在EC2实例的环境中,可以确保在重新启动Apache后,环境变量仍然存在,并且可以通过PHP的getenv()函数轻松检索到。这种方法避免了.htaccess文件中环境变量消失的问题。