Laravel中的环境驱动数据库设置?

Hai*_*ood 45 php database environment laravel

我正在移动Laravel框架,但我遇到了数据库设置问题,

具体来说,我有我的环境设置,他们正在为application.php配置文件工作正常,但database.php配置文件似乎没有任何效果.

即使我在我的环境文件夹中有一个database.php配置文件它永远不会被加载,我将一堆无效字符(键盘mash)放入文件中以使php抛出错误,但它永远不会被命中.

Laravel不支持基于环境的数据库设置吗?或者我做错了吗?

Lau*_*nce 64

您绝对可以按环境设置数据库设置(以及任何其他配置设置).

Laravel 3(Laravel 4和Laravel 5见下文):

首先 - 您需要$environments在您的定义paths.php中将其设置为以下内容:

$environments = array(
  'development' => array('*.dev'),
  'production' => array('*.com'),
);
Run Code Online (Sandbox Code Playgroud)

Laravel将自动查找此变量,如果设置,将使用关联的配置.

通常你有一个config文件夹,其设置如database.phpauth.php

现在只需为Laravel_Env您计划使用的每个文件夹创建一个新文件夹(例如开发).你最终会得到像这样的文件夹结构;

/application
  /config
    /development
      database.php
    /production
      database.php
    application.php
    config.php
    database.php
    ...
    user_agents.php
Run Code Online (Sandbox Code Playgroud)

你会注意到我只包含database.php在每个子文件夹中.Laravel将始终首先加载默认配置设置,然后使用环境设置中的任何自定义配置覆盖它们.

最后,在你的开发/数据库文件中,你会有这样的东西;

<?php
 return array(
'default' => 'mysql'
 );
Run Code Online (Sandbox Code Playgroud)

ps我刚刚在目前3.2.12版本的Laravel上测试了它 - 它绝对有效.

额外提示:您还可以自动为Artisan设置环境,因此您不必在每个命令行上手动包含环境!去做这个:

  1. 您需要知道您正在运行Artisan的"主机名".要找出 - 暂时编辑artisan.php根文件夹,然后添加var_dump(gethostname());到第2行(即所有内容).

  2. 运行php artisan命令行.您将获得包含主机名的字符串转储.在我的情况下它的"TSE-Win7";

  3. 删除对artisan.php文件的更改

  4. 将您的主机名(即"TSE-Win7")添加到环境中.

你应该得到这样的东西:

$environments = array(
  'development' => array('*.dev', 'TSE-Win7'),
  'production' => array('*.com'),
);
Run Code Online (Sandbox Code Playgroud)

Artisan现在将使用您的开发环境运行.如果部署到实时服务器 - 重新运行这些步骤以获取服务器的hostname(),并且可以为服务器配置特定的工匠配置!

对于Laravel 4:

始终是默认环境production.但是在start.php文件中,您可以定义其他环境.

 $env = $app->detectEnvironment(array(
   'local' => array('your-machine-name'),
));
Run Code Online (Sandbox Code Playgroud)

在Linux和Mac上,您可以在终端中确定您hostname的类型hostname- 它将输出您的计算机的名称.在Windows上放置文件dd(gethostname());的开头routes.php- 并运行一次网站 - 它将显示您的计算机的当前主机名.

要将当前环境作为应用程序中的变量 - 请在此处阅读此SO答案.Laravel 4:我怎样才能获得环境价值?

对于Laravel 5:

有一个配置文件,.env在根目录中调用. 观看这个laracast,配置完全解释.


Kni*_*ght 8

如果您正在使用工匠(laravel命令行)您需要添加的每个命令

artisan bla bla bla --env=Development 
Run Code Online (Sandbox Code Playgroud)

要么

artisan bla bla bla --env=Production
Run Code Online (Sandbox Code Playgroud)