关键词:
【中文标题】环境变量和工匠不在生产服务器上工作【英文标题】:Environment variables and artisan not working on production server 【发布时间】:2014-10-23 12:11:12 【问题描述】:我正在使用 Github 将我的网站部署到我的生产服务器。因此,我不想存储所有 .env.*.php 文件,所以它们都在我的 .gitignore 中。
在每个环境目录中,我将数据库配置设置为使用getenv()
,例如:
<?php
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => getenv('DB_HOST'),
'database' => getenv('DB_NAME'),
'username' => getenv('DB_USERNAME'),
'password' => getenv('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
然后我进入虚拟主机的 apache conf 文件并设置环境变量,如下所示:
SetEnv DB_HOST ***.***.***.***
SetEnv DB_NAME database
SetEnv DB_USERNAME databaseuser
SetEnv DB_PASSWORD databasepass
这一切都可以在生产服务器上完美运行。
但是,我现在只是手动导入了数据库,而不是使用php artisan migrate
,因为它不起作用。
我知道它不起作用,因为它没有命中 apache,因此没有设置变量,但我尝试了多种方法来尝试解决这个问题,但我还没有运气.
我尝试过强制环境查看是否可以使用php artisan --env=production migrate
获取变量
我还尝试通过运行php artisan env
来检查它是否使用了正确的环境,并且它使用的是正确的生产环境。
我的下一个想法是在生产服务器上手动创建一个 .env.production.php 文件。我创建了一个并使用了 getenv() 以防万一它像这样工作,但发生了同样的错误,所以我尝试手动设置变量而不使用 getenv(),但我仍然没有运气。
任何想法都将不胜感激。
【问题讨论】:
生产 .env 文件被称为 .env.php 而不是 .env.production.php 我已经在 bootstrap/start.php 中设置了一个名为“production”的环境,这还是不行吗? 我刚刚尝试了 .env.php 文件,如果我手动设置变量,它可以工作,有什么办法可以使用通过 apache 设置的变量来与 artisan 一起工作?跨度> 我不太确定,我从来没有使用过 apache 来设置这些变量。使用这些文件并在 .gitignore 中忽略它们要容易得多。 使用artisan
时,您无法访问来自 apache 的任何内容,因为 artisan 通过命令行运行,因此未设置这些环境变量。
【参考方案1】:
你应该使用laravel docs中描述的.env.php文件。
要在生产环境中设置环境变量,请在项目根目录中使用名为 .env.php
的文件:
<?php
# .env.php
return array(
'DB_HOST' => 'localhost',
'DB_NAME' => 'my_database',
'DB_USER' => 'user_name',
'DB_PASS' => 'super-secret-sauce',
);
对于不同的环境,您使用不同的 .env 文件。例如,在本地环境中,您将使用.env.local.php
,而对于测试,您将使用.env.testing.php
。
运行migrate
或db:seed
等手工命令时,您可以使用--env=
选项指定环境。
例如$ php artisan db:seed --class=UsersTableSeeder --env=testing
【讨论】:
.env 文件仅适用于 laravel 5。他使用的是 laravel 4 @RichardTorcato:.env.*.php
文件适用于 laravel 4。.env
文件适用于 laravel 5。最简单的区分方法是 L4 中的 env 文件是 php 文件。此外,我在文档中指向的链接是 Laravel 4 特定的。Django 在本地迁移工作,但不在 Elastic Beanstalk 生产上
...开发一个已经上线数月的django项目。没有更改设置文件或环境本身。我最近向模型添加了一个字段,但是当我将它部署到我的AmazonElasticBeanstalk环境 查看详情
Laravel 工匠优化最佳实践
...noptimize命令和最佳实践,但似乎缺少文档。我没有在生产服务器上安装Composer,所以具体来说,我想知道在必须推送到生产环境的开发中运行artisanoptimize--force时修改或创建了哪 查看详情
Mailform 在本地工作,但不在生产环境中(Heroku、Rails)
】Mailform在本地工作,但不在生产环境中(Heroku、Rails)【英文标题】:Mailformworkslocallybutnotinproduction(Heroku,Rails)【发布时间】:2021-12-0804:28:36【问题描述】:快速提问,我在Rails应用程序上使用Mailformgem。从我的Rails应用程序提交... 查看详情
使用 Docker 向 Laravel 的工匠公开 Elastic Beanstalk 环境变量
】使用Docker向Laravel的工匠公开ElasticBeanstalk环境变量【英文标题】:ExposingElasticBeanstalkenvironmentvariablestoLaravel\'sartisanusingDocker【发布时间】:2015-04-2100:11:27【问题描述】:我第一次尝试使用ElasticBeanstalk将我的应用程序部署到生产... 查看详情
从另一台没有工匠的电脑上运行 laravel 服务 css 和 js 不工作 [关闭]
...问题,我已经成功运行laravel没有工匠服务,然后css和js在服务器电脑上运行良好,但是当我尝试从另一 查看详情
使用本地、纱线工作区依赖项和生产环境(例如 App Engine)环境变量构建?
】使用本地、纱线工作区依赖项和生产环境(例如AppEngine)环境变量构建?【英文标题】:Buildwithbothlocal,yarnworkspacedependenciesandproductionenv(e.g.AppEngine)envvars?【发布时间】:2021-08-1917:19:21【问题描述】:我一直致力于通过GoogleAppEngi... 查看详情
为啥不在 Vue 和 Vue Router 生产环境中渲染我的组件?
】为啥不在Vue和VueRouter生产环境中渲染我的组件?【英文标题】:WhynotrendermycomponentsinVueandVueRouterproduction?为什么不在Vue和VueRouter生产环境中渲染我的组件?【发布时间】:2019-12-2806:13:17【问题描述】:使用VueRouter部署Laravel和Vue... 查看详情
Laravel 视图在生产中工作但不在本地
...述】:当我使用XAMPP转到本地计算机上的特定url时在生产服务器中本地请求没有可用的响应数据还有其他页面使用与此相同的页眉和页脚,并且它们在本地和生产服务器中都可以正常加载。这是编辑的样子/***Showtheformforediting 查看详情
cors 在本地主机上工作,但不在生产上
】cors在本地主机上工作,但不在生产上【英文标题】:corsworkingonlocalhostbutnotonproduction【发布时间】:2018-08-0103:55:23【问题描述】:expresscors有一个奇怪的问题。我的Cors配置在localhost上运行良好,但不适用于生产。我总是收到这... 查看详情
指令/工厂不在生产中工作
】指令/工厂不在生产中工作【英文标题】:Directive/FactoryNotWorkinginProduction【发布时间】:2015-08-1109:53:48【问题描述】:我有一个指令可以为用户打印出Flash消息。在我的本地主机上一切正常,但只要我在Heroku上测试它,就不会出... 查看详情
软件项目部署环境
...考技术A开发环境:开发环境是开发人员专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告和测试工具,是最基础的环境。开发环境的分支,一般是feature分支。测试环境:一般是克隆一份生... 查看详情
CDI - 生产者和限定符不在生产的对象上
】CDI-生产者和限定符不在生产的对象上【英文标题】:CDI-ProducersandQualifiersnotontheproducedobject【发布时间】:2015-09-0913:17:37【问题描述】:想象有一个SessionFactory的生产者(例如):@ProducespublicSessionFactoryproduceSessionFactory()不,我... 查看详情
测试环境建设原则和管理实践
...原是成本。在物理机时期,生产环境往往需要部署很多台服务器部,测试环境要想完全按照生产环境建设就需要提供和生产环境一样数量级的硬件成本,这个成本问题几乎是所有团队都难以应付的,因此物理机时期,测试环境的... 查看详情
测试环境建设原则和管理实践
...原是成本。在物理机时期,生产环境往往需要部署很多台服务器部,测试环境要想完全按照生产环境建设就需要提供和生产环境一样数量级的硬件成本,这个成本问题几乎是所有团队都难以应付的,因此物理机时期,测试环境的... 查看详情
测试环境建设原则和管理实践
...原是成本。在物理机时期,生产环境往往需要部署很多台服务器部,测试环境要想完全按照生产环境建设就需要提供和生产环境一样数量级的硬件成本,这个成本问题几乎是所有团队都难以应付的,因此物理机时期,测试环境的... 查看详情
环境变量和@Value 在 Spring Boot 上不能一起工作
】环境变量和@Value在SpringBoot上不能一起工作【英文标题】:Environmentvariablesand@Valuecan\'tworktogetheronSpringBoot【发布时间】:2016-09-0307:00:00【问题描述】:我有一个SpringBoot应用程序,它连接到一个用作缓存的Redis实例。当我在开发环... 查看详情
vue打包区分生产和测试环境
...术Avue工程在实际应用的打包过程中往往需要根据不同的环境打上不同的包,这个时候默认的模式便不能够满足使用了,参考vue-cli模式我们可以在工程中加入如下配置笔者在使用中因为文档没摸清楚,走了点弯路。因为VUE默认的... 查看详情
为 QA 和生产执行 Presto 任务,但不在 Dev 中
...不是在dev中运行。任务是停止集群应用程序。问题是开发服务器没有集群,停止集群的任务在这些服务器上失败。有办法处理吗?【问题讨论】:【参考方案1】:我们曾经也遇到过这个问题。 查看详情