Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何更好地设置Laravel项目的生产环境设置?_Php_Heroku_Laravel 5_Production Environment - Fatal编程技术网

Php 如何更好地设置Laravel项目的生产环境设置?

Php 如何更好地设置Laravel项目的生产环境设置?,php,heroku,laravel-5,production-environment,Php,Heroku,Laravel 5,Production Environment,如文档中所述,Laravel 5使用了一个名为DotEnv的冷却系统。它使我们能够配置项目中可用的各种环境变量。因为它可能包含键,所以在源代码中应该忽略它 此外,由于其名称是默认名称,每台计算机/开发人员都应该有自己的.env文件。 麻烦来了:首先,这是一个私人项目。所以我并不介意把钥匙藏在存储库里。其次,从其他框架(Symfony?Yii?)来看,我习惯于对prod/stg/dev环境进行单独的设置。但由于文件是唯一的,这是不可能的。最后,我不想弄乱生产机器 设置这些内容的最佳方法是什么?通常

如文档中所述,Laravel 5使用了一个名为DotEnv的冷却系统。它使我们能够配置项目中可用的各种环境变量。因为它可能包含键,所以在源代码中应该忽略它

此外,由于其名称是默认名称,每台计算机/开发人员都应该有自己的
.env
文件。
麻烦来了:首先,这是一个私人项目。所以我并不介意把钥匙藏在存储库里。其次,从其他框架(Symfony?Yii?)来看,我习惯于对prod/stg/dev环境进行单独的设置。但由于文件是唯一的,这是不可能的。最后,我不想弄乱生产机器


设置这些内容的最佳方法是什么?

通常使用文件从存储库中排除
.env
文件,以便针对不同的环境对其进行不同的配置

您可以创建多个
.env
文件,并手动将其上载到您的暂存/测试/生产环境。您只需执行一次,并根据您的环境更改设置


一旦部署到位,存储库中的未来部署将不会部署
.env
文件,并且您的环境将具有单独的配置

几年过去了,在积累了一些经验之后,我仍然可以说这两种方法(忽略和不忽略)env文件都有它们的优点


对于私人项目,Laravel上的最佳方法是将共享密钥保存在
.env.example
中,以及一些正常的默认值(例如
APP_env=prod
APP_DEBUG=false
),并将配置这些变量和空变量的任务留给安装项目的开发人员(即记录频道或个人密钥)。

澄清我的环境:我正在使用Heroku。我获取环境变量的方法是使用其控制台配置变量,但这远远不是理想的方法:每当我向.env添加内容时,我也必须在Heroku中更改它:(大多数开发人员将
.env
文件添加到。
gitignore
文件,因此您的配置不会通过存储库共享给任何人。要处理这些配置,您可以使用类似ftp的直接源代码。您是否阅读了我的整个问题,Safoor?是的,阅读了整个问题,然后向您建议将系统信息作为pe处理r环境…这正是我所想的,但它意味着一个额外的部署步骤-手动步骤!除非您创建它,否则没有地方存储这些设置。最后,它涉及到我之前说过的内容:每当我需要更改该文件时,我必须记住手动将更改上载到我的服务器。它创建了一个手动步骤,b这是环境设置的一部分。一旦我为我的分级/测试环境设置了主机,我就简单地部署所有文件,然后创建.nv文件。我再也不需要这样做了。我认为它是主机安装的一部分。是的,你必须手动改变这些设置,但是因为它们是特定于环境的,所以它们通常不CH。ange一旦配置。您预计您将进行什么样的更改/添加?如果您经常更改它们,我很想知道您可能会在其中存储什么。遗憾的是,此手动步骤不太适合现代的自动化部署系统,例如使用Git或Heroku(我的案例)我不认为这是一个服务器设置,而是应用程序信息。这样,它将与其他代码一起。关于什么将会改变,我不会在那里存储奇怪的东西。但是它偶尔会发生变化,就像配置一个新的集成一样。很容易忘记这一步。一天之内,你就在.env文件中添加了新密码。一周后,你的工作完成了,你就可以进行git部署了……但你不明白为什么你的应用程序会崩溃。哦,你必须进入你的主机并手动编辑该.env文件。这真让人毛骨悚然。