Windows 8.1上的Laravel 5环境检测无法正常工作

时间:2015-02-24 04:01:42

标签: development-environment laravel-5 env

现在它的工作刚刚更新到5.0.6版本。

$ php artisan env
Current application environment: production

如此重复.env.example个文件到.env.production但没有运气

所以我在Foundation->Bootstrap->DetectEnvironment.php处查看了第18行$app->environmentFile()

始终提供.env而不是.env.production

try
{
    Dotenv::load($app['path.base'], $app->environmentFile());
}

所以再次重复.env.example.env 在此 env变量可用之后,有时它会随机读取,有时则不会。现在我不知道在哪里看过程有什么问题。

请帮助!!

3 个答案:

答案 0 :(得分:0)

要使用Laravel环境,您必须将.env.example更改为.env并在.env

中更改您自己的配置

Laravel Doc

上详细了解环境配置

答案 1 :(得分:0)

我想您的配置只需要根目录下的单个.env文件。将APP_ENV更改为您想要的环境。

如果您使用php artisan serve运行应用程序,请记住在更改.env文件后停止并重新运行php artisan serve命令。

答案 2 :(得分:0)

迟到的答案,但我今天遇到同样的问题......

dot-env文件似乎不是来自应用程序的环境,而是来自ENVIRONMENT_FILE环境变量......

$ php artisan tinker --env=foo
Psy Shell v0.4.4 (PHP 5.4.39 — cli) by Justin Hileman
>>> app()
=> <Illuminate\Foundation\Application #000000003700ceef000000004af960b1> {
       configurationIsCached: false,
       environment: "foo",
       environmentFile: ".env",
       isLocal: false,
       ...

即使环境是'foo',也不会使用.env.foo文件。因此除了设置环境之外,您还需要设置环境变量。

$ ENVIRONMENT_FILE=".env.foo" php artisan tinker --env=foo
Psy Shell v0.4.4 (PHP 5.4.39 — cli) by Justin Hileman
>>> app()
=> <Illuminate\Foundation\Application #00000000570e634e0000000052841910> {
       configurationIsCached: false,
       environment: "foo",
       environmentFile: ".env.foo",
       isLocal: false,
       ...

从具有多个环境的每个自己的配置树(覆盖全局配置树)转移到基本上放弃环境的概念,而是从“环境”中获取/覆盖一堆配置设置(unix shell env,Apache的SetEnv ,dot-env,...)我还在猜测,这导致了这种令人困惑的情况。