Laravel 5如何从生产模式切换

70

当我运行$ php artisan env时,我得到以下结果:

Current application environment: production

我该如何将其更改为开发环境或类似的内容,以便我可以查看错误?我已经阅读了很多文档,但对于新手来说并不容易理解。我真的没有服务器配置经验。

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

5个回答

107

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

APP_ENV=development

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

APP_DEBUG=true

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


所以每个服务器/环境都有自己的 .env 文件?是这样吗? - mikelovelyuk
13
您只有一个 .env 文件,但在每台运行应用程序的机器上,其内容可能会有所不同。例如,在本地计算机上,您可能会有 APP_ENV=developmentAPP_DEBUG=true,但在生产服务器上,这些值将是 APP_ENV=productionAPP_DEBUG=false - Bogdan
是的,每个服务器/环境都有自己的.env文件。 - Bogdan
@Zl3n 你是在询问是否应该与应用程序的其余部分一起部署vendor文件夹,还是在生产服务器上运行composer install - Bogdan
@Bogdan 谢谢您的快速回答!因此,在本地使用composer,并通过FTP传输部署整个项目(我没有在服务器上运行composer的权限)。 - w3spi
显示剩余3条评论

53

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

# .env
APP_ENV=local

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

# .env
APP_ENV=production

40

在你修改了 .env 文件后,不要忘记运行命令 php artisan config:clear。然后再次运行 php artisan env 命令,这将返回正确的版本。


这将帮助那些在运行测试后发现本地服务器正在尝试使用 env.testing 的人。 - ohhh

6

你还可以关注一下暴露的方法 Application->loadEnvironmentFrom($file)

我需要一个应用在多个子域名上运行。所以在bootstrap/app.php中,我添加了以下内容:

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

不回答问题,但这非常有用。+1 - musicin3d
1
黑客攻击核心文件是不良实践。这些修改将在下次更新后丢失。 - ymakux

-3

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')
));

4
这个问题是关于 Laravel 5 的,而你的解决方案是针对 Laravel 4 的。在 L5 中已经没有 bootstrap/start.php 文件了。 - Bogdan
3
谢谢您的评论。我没有意识到这一点。 - Marcin Łojewski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接