php - 如何让 Laravel 4 环境变量工作?

标签 php mysql laravel laravel-4 environment-variables

我已经使用 laravel 创建了一个应用程序,并且我有一组我想一如既往地在网站上运行的环境。该设置来自 start.php 文件,我在其中声明了如下环境:

$env = $app->detectEnvironment(array(

    'local' => array('Mark-macbook.local'),
    'development' => array('excelsior.servers.prgn.misp.co.uk'),
    'production' => array('excelsior.servers.prgn.misp.co.uk'),

));

然后我在 server.php 所在的根目录中创建文件,并为每个环境创建具有正确数据库详细信息的文件,如下所示:

.env.local.php

<?php
return array(
    'DATABASE_HOST' => 'localhost',
    'DATABASE_NAME' => 'borough',
    'DATABASE_USER' => 'root',
    'DATABASE_PASSWORD' => 'root',
    'UNIX_SOCKET' => '/Applications/MAMP/tmp/mysql/mysql.sock'
);

.env.development.php

<?php
return array(
    'DATABASE_HOST' => 'localhost',
  'DATABASE_NAME' => 'db-name',
  'DATABASE_USER' => 'db-user',
  'DATABASE_PASSWORD' => 'pass'
);

.env.production.php

等等等等

然后在 app/config 的 database.php 文件中我有这个设置:

'connections' => array(

        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => $_ENV['DATABASE_HOST'],
            'unix_socket'   => $_ENV['UNIX_SOCKET'],
            'database'  => $_ENV['DATABASE_NAME'],
            'username'  => $_ENV['DATABASE_USER'],
            'password'  => $_ENV['DATABASE_PASSWORD'],
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

    ),

所以这就是我所知道的所有设置,但当我运行 php artisan serve 时,我得到了这个错误:

{"error":{"type":"ErrorException","message":"Undefined index: DATABASE_HOST","file":"\/Freelance\/Current Projects\/borough\/build\/borough-cc\/app\/config\/database.php","line":67}}

有谁知道为什么会发生这种情况以及我在这里可能做错了什么?

干杯

最佳答案

凭内存,因为我没有经常使用 Laravel,所以你没有正确使用它。

基本上,数据库访问将查看一种全局配置中的配置键。此全局配置是配置文件夹中的配置文件与环境配置相结合的结果。

因此,您只需要在环境配置中重新声明(或简单地声明)您的环境特定变量。

.env.local.php

<?php
    return array(
        'connections' => array(
            'mysql' => array(
                'host'      => 'localhost',
                'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
                'database'  => 'borough,
                'username'  => 'root,
                'password'  => 'root',
            ),
        ),
    ),
);

数据库.php

'connections' => array(
    'mysql' => array(
        'driver'    => 'mysql',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),
),

我有点担心在您的示例中您没有在两个配置中定义相同的键...基本上,您首先定义通用配置,然后在环境特定文件中重新定义您需要的任何内容。

关于php - 如何让 Laravel 4 环境变量工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24446961/

相关文章:

mysql 从几何集合中选择一个几何类

javascript - 使用AJAX、PHP和MySQL显示表格数据

mysql - 如何使用这种协同过滤形式实现相关文章算法

laravel - 验证整数数组

php - select 语句之间忽略条件

php - mysql_fetch_array 从一个简单的表中返回 0

javascript - 如何在网站中实现 whatsapp 分享按钮

php - 将 Git 与共享托管计划一起使用

php - 如何将 1 小时添加到约会 Carbon?

php - 如何在laravel注册后自动登录