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

陌路散爱 提交于 2019-12-11 07:03:49

问题


My app/config/database.php has been setup like this:

'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'    => '',
),

I have updated my env detection code like this in bootstrap/start.php:

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

Now, I have uploaded .env.production.php with the following:

<?php

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

I tested the environment detection like this:

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

As you can see, it's working as intended. I then proceeded to run the migration like this:

php artisan migration:install

When I do, I get the following error:

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

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

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

Any idea why this might be? it looks like it's failing to load the .env.production.php file.

Does anyone know how to fix this error? Thanks in advance.


回答1:


In the Laravel 4 docs it states that it needs to be .env.php on your production server.

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.

So simply change your environment detection code to this

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

Note - you still use .env.local.php on your development server.



来源:https://stackoverflow.com/questions/28635382/laravel-environment-config-not-loading-migration-fails-sqlstatehy000-2002

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!