我试图在Laravel 5中设置开发+生产环境,但是当我检查当前环境时 - 我在两种情况下都获得了本地...当我在本地工作时以及当我部署到Heroku时... < / p>
我想创建2个环境,以便从https顺利切换到http ...
这是AppServiceProvider.php文件......
from django.shortcuts import render
from django.views.generic.edit import FormView
from contacts.forms import ContactForm
from django.views.generic import TemplateView
from exchangelib import *
from exchangelib.items import *
class ContactRequestView(FormView):
template_name = 'contact_form.html'
form_class = ContactForm
success_url = '/contact/thanks/'
def form_valid(self, form):
credentials = Credentials(
username='simplesol.com\\jbobst',
password='password'
)
account = Account(
primary_smtp_address='jbobst@simplesol.com',
credentials=credentials,
autodiscover=True,
access_type=DELEGATE
)
audit_request = ''
for k in form.cleaned_data:
audit_request += k + ' = ' + form.cleaned_data[k] + '\n'
m = Message(
account=account,
subject='You have a new site audit request',
body= audit_request,
to_recipients=
['sales@simplesol.com','scheduling@simplesol.com'],
)
m.send_and_save()
form.save()
return super().form_valid(form)
class ContactThanksView(TemplateView):
template_name = 'contact_thanks.html'
这是.env文件
<?php
namespace App\Providers;
use App;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
$environment = App::environment();
echo '<pre>';
print_r($environment); // prints Local - always
echo '</pre>';
die();
if (App::environment('production', 'staging'))
{
\URL::forceSchema('https');
}
else
{
echo "environment=", App::environment(), "\n";
}
}
public function register()
{
//
}
}
答案 0 :(得分:0)
您需要更改Heroku服务器上的.env
文件,以反映其生产情况。您应该将APP_ENV=local
保留在本地开发计算机上,但将其更改为实时服务器上的APP_ENV=production
和临时服务器上的APP_ENV=staging
。
编辑:
在本地服务器的根目录中,您必须有一个.env
文件,其中包含APP_ENV=local
(其余文件可以保留在您的问题中)。在生产服务器上,您必须具有相同的.env
文件,但将APP_ENV=local
更改为APP_ENV=production
,并根据需要编辑数据库连接数据。您不需要任何其他文件/文件夹,.env
文件特定于环境。
然后这段代码可以正常工作(看看我的评论)
$environment = App::environment();
echo '<pre>';
print_r($environment); // prints Local - always - but this won't when you have the 2 differing environment files
echo '</pre>';
die();
if (App::environment('production', 'staging'))
{
\URL::forceSchema('https');
}
else
{
echo "environment=", App::environment(), "\n";
}
因为每个服务器上都有单独的 .env
文件。它们不意味着要在存储库中提交,它们必须不同并且位于项目的根目录中。