ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 环境 > 环境的支持可帮助FuelPHP和您的应用根据环境设置做出决策。FuelPHP本身使用环境设置根据当前处于活动状态的环境来加载/覆盖其他配置设置。 ### 环境和配置 > 根据应用程序所设置的环境,Config类查找特定于环境的配置文件。config类在与当前环境匹配的目录中查找配置文件。如果您与多个使用各自的数据库连接配置的开发人员一起工作,这将很有帮助。另一个有用的用例是,当您有一个用于测试的服务器应显示所有PHP错误和警告,而您的生产服务器不应该显示任何错误或警告,而只是将其记录下来以供开发人员稍后检查时。 这是说明此的示例: ~~~ app/ config/ auth.php db.php development/ db.php staging/ email.php mike_dev/ db.php email.php production/ db.php ~~~ > 当环境设置为 `\Fuel::DEVELOPMENT `时,来自`db.php`的设置将与`development / db.php`合并。除了`\Fuel::STAGING`没有暂存`/db.php`外,其他任何环境设置都一样。如果环境设置设置为`\Fuel::STAGING`,那么仅装入`db.php`。 一个真实的例子就是数据库配置。没有默认配置设置(这可能非常危险)。只有特定于环境的配置设置。 ### 预定义环境 FuelPHP具有四个预定义的环境。您还可以创建自己的自定义环境。 * **\ Fuel :: DEVELOPMENT** 开发环境。 * **\ Fuel :: TEST** 测试环境。 * **\ Fuel :: STAGING** 临时环境。 * **\ Fuel :: PRODUCTION** 生产环境。 ### 创建自定义环境 > 要创建自定义环境,只需使用自定义字符串(例如*mike\_dev)*并在/ fuel / app / config /中创建匹配的文件夹。 >> 例如: >> 如果您有一个名为Mike的开发人员,则可以创建一个名为*mike\_dev*的自定义环境。 >> 1. 在/ fuel / app / config /中创建一个名为*mike\_dev*的文件夹 >> 2. 将与Mike相关的所有配置文件放在新的config文件夹中,例如,在设置了*mike\_dev*环境后,将db.php放在/ fuel / app / config / mike\_dev /中,以加载自定义数据库配置。 >> 3. 请按照以下有关[设置环境](https://fuelphp.com/docs/general/environments.html#setting_env)的说明进行操作。设置环境时,不要使用预定义的FuelPHP环境(例如PRODUCTION),而应使用自定义字符串*mike\_dev* ### 设置环境 有三种设置环境的方法。前两个允许您设置FuelPHP在加载网页时将使用的环境。第三个选项显示了在使用FuelPHP的Oil时如何设置环境。机油不会使用您在下面的前两个选项中设置的环境,因此每次使用机油时都必须单独设置。 * 使用服务器环境变量设置环境(推荐) * 使用*/fuel/app/bootstrap.php*设置环境 * 使用oil时设置环境(不替代上述方法,它有其自己的单独用途) #### 使用服务器环境变量设置环境(推荐) > 您可以使用服务器环境变量**SetEnv**来设置应用程序应在其中运行的环境。每个服务器都有其自己的环境变量。以下包括已知配置的说明。 变量名称**FUEL_ENV**应该在大写形式中指定,环境名称用小写形式。 ##### Apache-服务器配置 1. 确保您的apache服务器配置加载扩展名mod_env 2. 编辑 ~~~ httpd.conf ~~~ 文件(如果您包括虚拟主机配置,则为所需的虚拟主机配置文件),然后添加以下代码。 ~~~ // run this application in production mode SetEnv FUEL_ENV production ~~~ ##### Apache-用户配置 1. 确保您的apache服务器配置加载扩展名mod_env 2. 创建一个 ~~~ .htaccess ~~~ 文件在 ~~~ /上市 ~~~ 您的应用程序目录 3. 编辑 ~~~ .htaccess ~~~ 文件并添加以下代码。 ~~~ // run this application in production mode SetEnv FUEL_ENV production ~~~ 请注意,启用.htaccess将大大降低Apache的速度。如果可能,请使用服务器配置并禁用.htaccess! ##### Nginx的 1. 在中编辑所需的文件 ~~~ / etc / nginx / sites-available ~~~ 并添加以下代码。 ~~~ # run this application in production mode location ~ \.php$ { fastcgi_param FUEL_ENV production; } ~~~ ##### IIS 在IIS中配置环境变量要复杂得多,您必须知道如何处理鼠标!;-) 您可以查看[此页面](https://www.iis.net/configreference/system.webserver/fastcgi/application/environmentvariables/environmentvariable#003a)的方法。 #### 使用/fuel/app/bootstrap.php设置环境 如果无法使用FUEL_ENV服务器变量设置环境,则可以在*fuel / app / bootstrap.php中*手动更改设置。 ~~~ // Inside fuel/app/bootstrap.php /** * Your environment. Can be set to any of the following: * * Fuel::DEVELOPMENT * Fuel::TEST * Fuel::STAGING * Fuel::PRODUCTION * Any string you want, for example, a developer name (mike_dev) * */ Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::PRODUCTION); ~~~ 请注意,使用此代码时,设置环境变量的优先级! ### 使用oil时设定环境 FuelPHP的Oil不使用为您的应用程序设置的相同环境。每次运行Oil实例时,必须单独设置Oil进入的环境。以下说明告诉您如何执行此操作。如果要为应用程序设置环境,请参阅使用服务器环境变量设置环境(推荐)或使用*/fuel/app/bootstrap.php*设置环境 使用\* unix操作系统时,可以env在启动机油之前使用命令定义变量。 ~~~ $ env FUEL_ENV=production php oil -v ~~~ 据说,使用Windows时,此方法有效: ~~~ C:\> set FUEL_ENV=production && php oil -v ~~~ ### 获取当前环境 您可以使用**\ Fuel :: $ env以**编程方式检索当前环境。 不要使用**$ _SERVER ['FUEL_ENV']**。如果不设置环境,它将不起作用。使用$ _SERVER是不可靠的,因为它可能不存在,或者可能在代码中被覆盖(这使其与\ Fuel :: $ env不同)。 ~~~ // comparing current appliation environment to a predefinded environment if(\Fuel::$env == \Fuel::PRODUCTION) { //do something } // comparing current appliation environment to a custom environment if(\Fuel::$env == "mike_dev") { //do something } ~~~