2015-08-17 12 views
1

使用laravel 5.1。所以在我的apache虚拟主机中,我将环境变量'ENV_DEV'设置为1。如果我从香草PHP或甚至在控制器中的print_r($ _ SERVER),我可以看到变量已设置。阅读环境变量设置在Laravel 5.1中的虚拟主机配置文件

我想代码插入到的config/database.php中却检测环境和修改数据库连接,由于某种原因,我得到以下错误运行工匠:

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在一系列环境中进行常见设置,并在上游处理数据库配置。

有没有解决方法?

+1

如果该设置仅适用于vhost/apache环境,则CLI版本将无法看到它。 – mario

回答

0

如果要指定控制台ENV名字,只是用PARAM --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'; 
} 
... 
0

与其他人一样写道,来自Apache的环境变量不会自动往下淌到命令行命令。但是可以将它们提供给shell的命令。例如:ENV_DEV=1 php artisan migrate