Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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:多个环境是否需要多个.env文件?_Php_Laravel_Configuration_Environment_Production - Fatal编程技术网

Php Laravel:多个环境是否需要多个.env文件?

Php Laravel:多个环境是否需要多个.env文件?,php,laravel,configuration,environment,production,Php,Laravel,Configuration,Environment,Production,在Laravel4.x中,开发和生产环境可能只有一个配置文件。该框架将根据主机自动检测应该使用什么 对于Laravel 5.x,我似乎必须采取以下方法: 在我的本地计算机上,根目录中有一个.env文件,其中包含“APP_env=local”和其他要在本地运行的配置文件 在我的服务器上,与“APP_ENV=production”和相关设置相同 因此,如果部署我的站点,我必须注意不要用本地版本覆盖服务器上的.env文件 到目前为止这是正确的还是我遗漏了什么 主要目标是使敏感数据不受版本控制,并将

在Laravel4.x中,开发和生产环境可能只有一个配置文件。该框架将根据主机自动检测应该使用什么

对于Laravel 5.x,我似乎必须采取以下方法:

  • 在我的本地计算机上,根目录中有一个.env文件,其中包含“APP_env=local”和其他要在本地运行的配置文件

  • 在我的服务器上,与“APP_ENV=production”和相关设置相同

因此,如果部署我的站点,我必须注意不要用本地版本覆盖服务器上的.env文件

到目前为止这是正确的还是我遗漏了什么

主要目标是使敏感数据不受版本控制,并将所有内容都放在一个地方

关于此方法的以下要点和问题尚不清楚:

  • .env包的创建者建议不要在生产模式下使用它(源:)。在Laravel中解决这个问题的方法是对整个框架中的每个设置进行硬编码,并确保没有将.env文件部署到服务器上(这可能是一个巨大的安全漏洞)

  • 如果使用上述解决方案,您将如何使敏感数据不受版本控制

  • 假设使用了两个不同的.env文件(用于开发,一个用于生产模式下的服务器),这不是生产中的性能问题吗?因为每个设置都会从.env文件中反复调用


这似乎是对4.x方法的一种倒退,在4.x方法中,我可以在一个地方配置并完成所有操作,而不需要使用两个同名的不同文件,并且注意不要将它们混淆。在.php中加载一个数组也比多次调用一个文件快得多。

如果要在UNIX系统中隐藏文件,只需在文件名的开头添加一个点即可。我不知道它在Windows系统上是如何工作的,但该文件应该隐藏在OS X和Unix系统中,以防止人们意外地复制到另一个项目中

每个环境只能有一个.env文件,因此您必须登录到服务器并手动添加一个新的.env文件

如果您正在使用GIT,并且希望阻止它被包括在内,只需将它添加到您的.gitignore文件中即可


如果要在UNIX系统中隐藏文件,只需在文件名的开头添加一个点即可。我不知道它在Windows系统上是如何工作的,但该文件应该隐藏在OS X和Unix系统中,以防止人们意外地复制到另一个项目中

每个环境只能有一个.env文件,因此您必须登录到服务器并手动添加一个新的.env文件

如果您正在使用GIT,并且希望阻止它被包括在内,只需将它添加到您的.gitignore文件中即可


是的,你是对的。对于5.x,您必须在任何单个环境(如开发、登台、生产等)上创建完全不同的.env文件。这包含在.gitignore中,因此git系统不关心它。当你们改变环境时,每一次操作都应该再次用手进行


典型的过程是ssh到远程计算机,git克隆您的项目,composer安装所有依赖项,然后创建一个全新的.env文件,您应该在其中放置与此环境相关的所有专用设置。您的指南是.env.example。

是的,您是对的。对于5.x,您必须在任何单个环境(如开发、登台、生产等)上创建完全不同的.env文件。这包含在.gitignore中,因此git系统不关心它。当你们改变环境时,每一次操作都应该再次用手进行


典型的过程是ssh到远程计算机,git克隆您的项目,composer安装所有依赖项,然后创建一个全新的.env文件,您应该在其中放置与此环境相关的所有专用设置。您的指南是.env.example.

关于生产,请使用实际值。PHPDotEnv模仿的那些。这样,在没有.env文件的情况下,
env()
函数读取系统提供的文件@BenSwinburne是否需要更改一些默认的框架例程或函数?不,服务器本身具有框架可以获取的环境变量。例如,在服务器上,通常在.htaccess文件或Apache中的virualhost指令中设置它们。通过这种方式,Apache可以在PHP中为该站点提供配置。您正在使用的
env()
函数为您访问
$\u env
.env
文件只需在开发环境中轻松填充
$\u env
。我看不出包创建者在哪里提到不要在生产模式下使用它?!这个包的主要目标就是这样做——用一个文件将开发和生产分开。默认情况下,
.env
文件被
.gitignore
文件排除-只需使用GIT进行部署。@BenSwinburne谢谢,这就清楚了。稍后我会在您的解决方案中添加一个答案。在生产中,使用实际值。PHPDotEnv模仿的那些。这样,在没有.env文件的情况下,
env()
函数读取系统提供的文件@BenSwinburne是否需要更改一些默认的框架例程或函数?不,服务器本身具有框架可以获取的环境变量。例如,在服务器上,通常在.htaccess文件或Apache中的virualhost指令中设置它们。通过这种方式,Apache可以在PHP中为该站点提供配置。您正在使用的
env()
函数为您访问
$\u env
.env
文件只需在开发环境中轻松填充
$\u env
。我看不出包创建者在哪里提到不要在生产模式下使用它?!这个
// filename: .gitignore
.env