Laravel 环境配置未加载,迁移失败 - SQLSTATE[HY000] [2002] 没有这样的文件或目录

Laravel environment config not loading, migration fails - SQLSTATE[HY000] [2002] No such file or directory

我的app/config/database.php设置如下:

'mysql' => array(
    'driver'    => 'mysql',
    'host'      => getenv('DB_HOST'),
    'database'  => getenv('DB_NAME'),
    'username'  => getenv('DB_USER'),
    'password'  => getenv('DB_PASS'),
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

我已经在 bootstrap/start.php:

中像这样更新了我的环境检测代码
$env = $app->detectEnvironment(function() {
    return file_exists(dirname(__FILE__) . '/../.env.production.php')
        ?
        'production'
        :
        'local';
});

现在,我上传了 .env.production.php,其中包含以下内容:

<?php

return
[
    'DB_HOST' => '178.xxx.xxx.xxx',
    'DB_NAME' => 'USERNAME',
    'DB_USER' => 'PASSWORD',
    'DB_PASS' => 'DBNAME',
];

我这样测试环境检测:

[www-data@server]$ php artisan env
Current application environment: production

如您所见,它正在按预期工作。然后我像这样 运行 进行迁移:

php artisan migration:install

当我这样做时,出现以下错误:

[www-data@server]$ php artisan migrate:install --env=production

  [PDOException]                                    
  SQLSTATE[HY000] [2002] No such file or directory  

migrate:install [--database[="..."]]

知道为什么会这样吗?看起来它无法加载 .env.production.php 文件。

有谁知道如何解决这个错误?提前致谢。

Laravel 4 docs 中声明它需要在您的生产服务器上 .env.php

Now, on your production server, create a .env.php file in your project root that contains the corresponding values for your production environment. Like the .env.local.php file, the production .env.php file should never be included in source control.

所以只需将您的环境检测代码更改为此

$env = $app->detectEnvironment(function() {
    return file_exists(dirname(__FILE__) . '/../.env.php')
        ?
        'production'
        :
        'local';
});

注意 - 您仍在开发服务器上使用 .env.local.php