【问题标题】:Laravel not detecting environemnt correctLaravel 未检测到正确的环境
【发布时间】:2014-11-18 20:34:26
【问题描述】:

我是 Laravel 的新手,希望得到一些帮助。

首先我尝试根据机器名称设置我的“开发”环境,所以我这样做了

die(gethostname()); // output the machine name, in my case is ΛΥΚΟΣ-PC
$env = $app->detectEnvironment(array(

    'local' => array('ΛΥΚΟΣ-PC'),

));

但似乎没有用。所以我按照Environment Configuration 上的说明做了以下操作

$env = $app->detectEnvironment(function(){

    switch ($_SERVER['HTTP_HOST']) {
        case 'localhost':
            return 'local';
        break;

        default:
            return 'production';
        break;
    }
});
die($env); // outputs 'local'

问题是当我尝试进行一些迁移时,我在命令行中输入了:

$ php artisan migrate

为了创建表,但我得到了这个

*******************************
*  Application in Production! *
*******************************

Do you really want to run this command?

如果我继续,我会得到“用户'@'localhost'拒绝访问数据库'forge'。

嗯,我猜这个问题与环境配置有关。任何想法如何解决它?

【问题讨论】:

  • 尝试使用--env 标志(所以php artisan --env migrate)。这行得通吗?
  • 我得到以下信息:[RuntimeException] 没有足够的参数
  • 应该是:php artisan migrate --env=local

标签: php laravel-4 development-environment database-migration


【解决方案1】:

$_SERVER['HTTP_HOST'] 解决方案不适用于 Artisan 的原因是 $_SERVER['HTTP_HOST'] 变量仅在通过 Web 服务器启动时可用。

'local' => array('ΛΥΚΟΣ-PC') 应该可以工作,可能与特殊字符有关。

我根据 laravel 路径设置我的环境:

$env = $app->detectEnvironment(array(

    'local' => strpos(getcwd(), '/local')>-1,
    'staging' => strpos(getcwd(), '/staging')>-1,

));

因此,如果/local 是路径的一部分,则环境设置为本地。 注意:您可能需要在 Windows 上将 / 替换为 \

您也可以为 Artisan 指定环境:

php artisan migrate --env=local

但我建议您整理好环境,让一切变得更轻松。而且搞砸你的生产的机会更少。

【讨论】:

  • 我尝试了你的方式并做了这个'local' => strpos(getcwd(), '/htdocs/my_projects')>-1,但是当我死的时候($env);我在屏幕上看到了“制作”
  • 嗯,getcwd() 包含什么?
  • 我的错,对不起。我不得不将 '/' 改为 '\'
  • 没想到,我用的是Linux。我的答案有这些信息:)
【解决方案2】:

在使用 artisan 命令时,最好始终明确地包含环境。你可以这样做:

php artisan migrate --env=local

这将确保命令在local 环境中运行。

【讨论】:

  • 为什么这是最佳实践?您是否仍会收到有关您在生产服务器上的警告?
  • 这是最佳实践,因为如果您明确指定环境,您就可以 100% 确定在哪个环境中执行命令,并且不会意外在错误的环境中执行命令。您仍然会收到有关生产的警告。
  • 谢谢,像这样可以正常工作,但是我想问一下是否可以使用 'local' => array('ΛΥΚΟΣ-PC') 设置来解决这个问题
猜你喜欢
  • 1970-01-01
  • 2015-01-01
  • 1970-01-01
  • 2014-03-10
  • 2017-06-19
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多