Php 为什么我要使用环境变量来配置Symfony应用程序?
昨天是我第一次使用Symfony 4在自己的服务器上进行部署。在阅读有关部署的文章时,我引用: 大多数Symfony应用程序从环境中读取其配置 变量。在本地开发时,通常将这些存储在 .env文件。但在生产过程中,不是创建此文件,而是 应该设置真实的环境变量 现在,由于我在多个网站上读到这是生产中正确的工作方式,我对此有几点怀疑:Php 为什么我要使用环境变量来配置Symfony应用程序?,php,symfony,deployment,environment-variables,Php,Symfony,Deployment,Environment Variables,昨天是我第一次使用Symfony 4在自己的服务器上进行部署。在阅读有关部署的文章时,我引用: 大多数Symfony应用程序从环境中读取其配置 变量。在本地开发时,通常将这些存储在 .env文件。但在生产过程中,不是创建此文件,而是 应该设置真实的环境变量 现在,由于我在多个网站上读到这是生产中正确的工作方式,我对此有几点怀疑: 生产中环境变量的含义是什么?为什么不把变量放在Wordpress、Django等文件中呢 为什么我希望在全局OS变量中具有项目数据库的凭据 作为操作系统中的全局性和可
- 生产中环境变量的含义是什么?为什么不把变量放在Wordpress、Django等文件中呢
- 为什么我希望在全局OS变量中具有项目数据库的凭据
- 作为操作系统中的全局性和可访问性,如果我有多个项目具有相同的环境变量(例如,Symfony中的
),更改其值将影响我的所有项目!这有什么意义吗APP_env
对不起,我的英语不太好这个问题不太适合这样做,但简而言之:环境变量可以为任何环境设置,而不仅仅是操作系统。例如,像您的web服务器。我在
/etc/httpd/conf.d/variables.conf
中有以下内容,这些内容包含在我的主Apache配置中的某些虚拟主机中:
#Config for web apps
SetEnv DB_CONNECTION "mysql"
SetEnv DB_HOST "192.168.242.1"
SetEnv DB_USERNAME "dbuser"
SetEnv DB_PASSWORD "dbpass"
SetEnv DB_DATABASE "dbname"
可以使用权限保护此文件,以确保只有web服务器本身可以读取这些文件。如果我有多个应用程序或虚拟主机,我可以有多个文件。这个问题不太适合这样做,但简而言之:环境变量可以为任何环境设置,而不仅仅是操作系统。例如,像您的web服务器。我在
/etc/httpd/conf.d/variables.conf
中有以下内容,这些内容包含在我的主Apache配置中的某些虚拟主机中:
#Config for web apps
SetEnv DB_CONNECTION "mysql"
SetEnv DB_HOST "192.168.242.1"
SetEnv DB_USERNAME "dbuser"
SetEnv DB_PASSWORD "dbpass"
SetEnv DB_DATABASE "dbname"
可以使用权限保护此文件,以确保只有web服务器本身可以读取这些文件。如果我有多个应用程序或虚拟主机,我可以有多个文件
生产中环境变量的含义是什么?为什么不呢?
把变量放在像Wordpress、Django等文件中就行了吗
首先要了解的是有多少不同的环境可以运行您的代码。您可以拥有生产、登台、测试和本地环境。由于冲突而无法同步到您的VCS回购协议的每个服务器上都有完全不同的配置文件,这真的有意义吗
在Symfony和其他框架中仍然有配置文件。但是,某些设置依赖于环境,而其他设置则不依赖于环境。依赖于环境的变量可以从环境变量中设置。通过这种方式,您可以同步配置文件,但仍保持特定于环境的设置
环境变量不一定是全球性的,这一事实可以解释你其余的担忧。Web服务器可以在各种上下文中定义环境变量,如miken32所建议的在特定虚拟主机中使用SetEnv 生产中环境变量的含义是什么?为什么不呢? 把变量放在像Wordpress、Django等文件中就行了吗 首先要了解的是有多少不同的环境可以运行您的代码。您可以拥有生产、登台、测试和本地环境。由于冲突而无法同步到您的VCS回购协议的每个服务器上都有完全不同的配置文件,这真的有意义吗 在Symfony和其他框架中仍然有配置文件。但是,某些设置依赖于环境,而其他设置则不依赖于环境。依赖于环境的变量可以从环境变量中设置。通过这种方式,您可以同步配置文件,但仍保持特定于环境的设置
环境变量不一定是全球性的,这一事实可以解释你其余的担忧。Web服务器可以在各种上下文中定义环境变量,如miken32所建议的在特定虚拟主机中使用SetEnv 生产中环境变量的含义是什么?为什么不把变量放在Wordpress、Django等文件中呢
- 环境变量是当您将应用程序从一台服务器移动到另一台服务器时发生变化(且仅发生变化)的值
- 这些是该服务器或该集群特有的值,例如服务器的主机名或用于连接数据库的主机名/IP
- 环境变量为val