【问题标题】:Laravel 5 How to switch from Production modeLaravel 5 如何从生产模式切换
【发布时间】:2015-04-27 12:03:54
【问题描述】:

当我运行 $ php artisan env 时,我得到了;

Current application environment: production

如何将其更改为开发或类似的东西?所以我可以看到错误。我已经阅读了a lot of the documentation,但对于新手来说理解起来并不容易。我没有服务器配置经验,真的。

我确信有“聪明”的方法可以做到这一点,但我现在感兴趣的只是手动更改环境。我该怎么做?

【问题讨论】:

    标签: php laravel laravel-artisan


    【解决方案1】:

    Laravel 5 从位于项目根目录的 .env 文件中获取与环境相关的变量。您只需将APP_ENV 设置为您想要的任何内容,例如:

    APP_ENV=development
    

    这用于识别当前环境。如果要显示错误,则需要在同一文件中启用调试模式:

    APP_DEBUG=true
    

    .env 文件的作用是允许您根据运行应用程序的机器进行不同的设置。因此,在您的生产服务器上,.env 文件设置将与您的本地开发环境不同。

    【讨论】:

    • 所以每个服务器/环境都有自己的.env 文件?对吗?
    • 您有一个.env 文件,但在您运行应用程序的每台机器上内容可能不同。例如,在您的本地计算机上,您将拥有 APP_ENV=developmentAPP_DEBUG=true,但在您的生产服务器上,值将是 APP_ENV=productionAPP_DEBUG=false
    • 是的,每个服务器/环境都有自己的.env 文件。
    • @Bogdan 在我使用 Composer 的情况下,是否应该在设置 APP_ENV=production 后让 vendor 文件夹进入生产环境?
    • @Zl3n 您是否应该在应用程序的其余部分部署vendor 文件夹或在生产服务器上运行composer install
    【解决方案2】:

    Laravel 5 使用 .env 文件来配置您的应用程序。 .env 不应提交到您的存储库中,例如 github 或 bitbucket。在您的本地环境中,您的 .env 将如下所示:

    # .env
    APP_ENV=local
    

    对于您的生产服务器,您可能有以下配置:

    # .env
    APP_ENV=production
    

    【讨论】:

      【解决方案3】:

      在对 .env 文件进行更改后,不要忘记运行命令 php artisan config:clear。再次执行此操作php artisan env,将返回正确的版本。

      【讨论】:

      • 这将帮助任何人在运行测试后发现本地服务器正在尝试使用env.testing
      【解决方案4】:

      你还可以看看暴露的方法Application->loadEnvironmentFrom($file)

      我需要一个应用程序在多个子域上运行。所以在bootstrap/app.php 我添加了类似的内容:

      $envFile = '.env';
      // change $envFile conditionally here
      $app->loadEnvironmentFrom($envFile);
      

      【讨论】:

      • 不回答问题,但这非常有用。 +1
      • 破解核心文件是不好的做法。这些修改将在下次更新后丢失
      【解决方案5】:

      在 Laravel 中,默认环境始终是生产环境。

      您需要在bootstrap/start.php 中为您的环境指定正确的主机名,例如:

      /*
      |--------------------------------------------------------------------------
      | Detect The Application Environment
      |--------------------------------------------------------------------------
      |
      | Laravel takes a dead simple approach to your application environments
      | so you can just specify a machine name for the host that matches a
      | given environment, then we will automatically detect it for you.
      |
      */
      
      $env = $app->detectEnvironment(array(
          'local' => array('homestead'),
          'profile_1' => array('hostname_for_profile_1')
      ));
      

      【讨论】:

      • 问题是针对 Laravel 5。您的解决方案是针对 Laravel 4。在 L5 中不再有 bootstrap/start.php 文件。
      • 感谢您的评论。我没有意识到这一点。
      猜你喜欢
      • 2020-01-29
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 2016-09-15
      • 2015-02-04
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      相关资源
      最近更新 更多