Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.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
Symfony 4-最佳实践/环境变量_Symfony_Environment Variables_Symfony4_Symfony Flex - Fatal编程技术网

Symfony 4-最佳实践/环境变量

Symfony 4-最佳实践/环境变量,symfony,environment-variables,symfony4,symfony-flex,Symfony,Environment Variables,Symfony4,Symfony Flex,多年来我一直在使用parameters.yml,但现在是时候使用环境变量切换到Symfony 4了:-) 关于在我的服务器上部署它,我有几个问题。我正在使用Nginx+PHP-FPM。文档中说我们可以在服务器上设置环境变量。其他一些博客建议在服务器上设置环境变量。那么控制台呢?bin/console如何了解这些环境变量 目标是集中设置并拥有单个编辑点。也许我们可以在操作系统端设置它们,但是如果我在同一台服务器上运行多个应用程序呢 在我的用例中,我有一个远程服务器(另一个应用程序是FreeBSD或

多年来我一直在使用
parameters.yml
,但现在是时候使用环境变量切换到Symfony 4了:-)

关于在我的服务器上部署它,我有几个问题。我正在使用Nginx+PHP-FPM。文档中说我们可以在服务器上设置环境变量。其他一些博客建议在服务器上设置环境变量。那么控制台呢?
bin/console
如何了解这些环境变量

目标是集中设置并拥有单个编辑点。也许我们可以在操作系统端设置它们,但是如果我在同一台服务器上运行多个应用程序呢

在我的用例中,我有一个远程服务器(另一个应用程序是FreeBSD或Ubuntu 16.04),在
/var/www/myapp/prod
中提供生产环境,在
/var/www/myapp/qualif
中提供预生产(在nginx配置中具有受限访问权限)。它们共享相同的环境变量键,但不共享相同的值(例如,不同的数据库DSN)。我没有用docker


您的建议是什么?

我通常在运行时设置配置变量。可以是带-e的docker run命令,也可以是docker-compose.yml文件


我会为不同的环境运行不同的容器-

好吧,这在中描述得很清楚。从3.3开始,引入了新的
Dotenv
组件,它将在
.env
文件中保存环境变量,以便在本地环境中使用。是的,但文档中说“Symfony Dotenv应仅用于开发/测试/登台环境。对于生产环境,使用“真实”环境变量。”-也许在我的用例中,使用DotEnv组件更安全?文档建议是正确的。在代码中保留重要常量(如密码、API密钥等)总是一种不好的做法。这就是为什么您需要设置环境变量的原因,1)使用单个代码库为不同的环境轻松设置;2) 如果有人访问代码库,很难窃取。我以前见过这个问题,但到目前为止还没有答案。目前,即使在生产环境中,我也只接受解析.env文件的开销。似乎真的应该有一个fastcgi实用程序,可以从.env文件中读取参数。但我还没有找到。可能会尝试在Symfony站点上询问,或者再次询问nginx社区,在nginx fastcgi_参数中设置环境变量将阻止您的
bin/console
命令从它们继承,这就是我反对这种做法的原因。实际上,我在生产环境中解析了.env文件,该文件适用于http和cli,但我不明白为什么这是一种不好的做法,因为.env文件被忽略了。在我的设置中,此文件仅存在于不同的部署目标上,而不存在于VCS中。