Laravel未检测到正确的环境

有限责任公司

我是Laravel的新手,请帮忙。

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

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

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

));

但似乎没有用。因此,我按照“环境配置”中的说明进行了以下操作

$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'的信息。

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

托马斯·詹森(Thomas Jensen)

$_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

但我建议您整理好环境,使一切变得容易。减少混乱生产的机会。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章