Laravel 环境配置未加载,迁移失败 - SQLSTATE[HY000] [2002] No such file or directory
Posted
技术标签:
【中文标题】Laravel 环境配置未加载,迁移失败 - SQLSTATE[HY000] [2002] No such file or directory【英文标题】:Laravel environment config not loading, migration fails - SQLSTATE[HY000] [2002] No such file or directory 【发布时间】:2015-04-22 12:14:16 【问题描述】:我的 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 检测代码:
$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 迁移:安装
当我这样做时,我收到以下错误:
[www-data@server]$ php artisan migrate:install --env=production
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
migrate:install [--database[="..."]]
知道为什么会这样吗?看起来它无法加载 .env.production.php 文件。
有谁知道如何解决这个错误?提前致谢。
【问题讨论】:
这听起来像是无法连接到 MySQL 服务器,而不是加载环境文件。你确定楼主是对的吗? 178...貌似是外网ip,数据库服务器不是在自己机器上吗? 我有一个拆分服务器服务器设置。一台机器用于 web/php,另一台机器仅用于 mysql。也许我忘了给分贝远程访问。让我检查一下…… 如果问题仍然存在,我建议替换数据库配置文件中的 getenv() 调用 - 不是永久的,只是为了确认服务器连接是否确实是问题。 我刚刚检查过,数据库设置正确。好的,我会试试的。 其实我想我可能已经想通了。 Laravel 4 默认命名环境生产,所以文件应该只是 .env.php,而不是 .env.production.php。至少值得一试。 :) 【参考方案1】:在Laravel 4 docs 中声明它需要在您的生产服务器上为.env.php
。
现在,在您的生产服务器上,在您的项目中创建一个 .env.php 文件 包含您的生产的相应值的根 环境。与 .env.local.php 文件一样,生产 .env.php 文件不应包含在源代码管理中。
因此,只需将您的环境检测代码更改为此
$env = $app->detectEnvironment(function()
return file_exists(dirname(__FILE__) . '/../.env.php')
?
'production'
:
'local';
);
注意 - 您仍然在开发服务器上使用 .env.local.php
。
【讨论】:
以上是关于Laravel 环境配置未加载,迁移失败 - SQLSTATE[HY000] [2002] No such file or directory的主要内容,如果未能解决你的问题,请参考以下文章