读取环境变量在Laravel 5.1配置文件中的Vhosts中设置

时间:2015-08-17 20:59:01

标签: php apache laravel

使用laravel 5.1。所以在我的apache vhost中,我将环境变量'ENV_DEV'设置为1。如果我从vanilla PHP或甚至在控制器中print_r($ _ SERVER),我可以看到变量已设置。

我想在config / database.php中插入代码来检测环境并更改数据库连接,但是出于某种原因,我在运行artisan时遇到以下错误:

if ($_SERVER['ENV_DEV'] == 1) { ...dbconfig here... }

php artisan migrate

PHP Notice:  Undefined index: ENV_DEV in /www/config/database.php on line 2

我理解在.env中声明它是一种解决方案,但我的目标是在一系列环境中使用.env进行常见设置,并在上游处理数据库配置。

有解决方法吗?

2 个答案:

答案 0 :(得分:0)

如果要为控制台指定env名称,只需使用参数--env=your_env运行脚本:

php artisan migrate --env=your_env

如果要为Web请求指定env,可以定义Web服务器参数。 Apache的示例:

SetEnv LARAVEL_ENV your_env

修改bootstrap/environment.php

...
if (empty($curEnv))
{
    // Use LARAVEL_ENV if defined
    $curEnv = getenv('LARAVEL_ENV') ?: 'local';
}
...

答案 1 :(得分:0)

与其他人写的一样,来自apache的环境变量不会自动渗透到命令行命令中。然而,可以将它们提供给来自shell的命令。例如:ENV_DEV=1 php artisan migrate