Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
使用codeigniter的多个环境_Codeigniter - Fatal编程技术网

使用codeigniter的多个环境

使用codeigniter的多个环境,codeigniter,Codeigniter,我试图了解使用多个环境的最佳做法,例如使用codeigniter为我的应用程序进行开发、测试和生产 到目前为止,我有一个文件夹用于我的应用程序。我在配置文件中看到过这样的地方:为每个环境创建一个文件夹,并在每个环境文件夹中放置数据库文件的副本 这是处理多个环境的最佳方法吗?我问这个问题的原因是,如果我在我的dev子域上工作,我仍然需要将所有相同的文件重新加载到主根文件夹。这是最好的工作流程吗 所以基本上我有两个网站 dev.siteurl.com siteurl.com 我正试图找出处理这件事的

我试图了解使用多个环境的最佳做法,例如使用codeigniter为我的应用程序进行开发、测试和生产

到目前为止,我有一个文件夹用于我的应用程序。我在配置文件中看到过这样的地方:为每个环境创建一个文件夹,并在每个环境文件夹中放置数据库文件的副本

这是处理多个环境的最佳方法吗?我问这个问题的原因是,如果我在我的dev子域上工作,我仍然需要将所有相同的文件重新加载到主根文件夹。这是最好的工作流程吗

所以基本上我有两个网站

dev.siteurl.com siteurl.com


我正试图找出处理这件事的最佳选择。因为我想知道是否需要将所有文件重新加载到主级别,以便它可以处理生产服务器,还是有更简单的方法。

是的,它的工作方式是在/application/config文件夹下创建一个名为development的额外嵌套文件夹,以便

/应用程序/配置/开发/

在开发中,您将放置database.php文件的副本并更改开发数据库设置

/application/config/development/database.php

然后,您必须告诉codeigniter您使用的是哪个版本,因此在您的基本根文件夹edit index.php中:

/index.php

define('ENVIRONMENT', 'development');
当您想要使用/config/development/database.php时,您将把环境更改为开发,当您想要使用生产数据库时,您将把环境更改为生产


编辑:CI TOC也有一个简短的部分解释这一点:

我正在index.php中定义envirement
做点像

if ($_SERVER['SERVER_NAME']=='siteurl.com')
   define('ENVIRONMENT', 'production');
else if ($_SERVER['SERVER_NAME']=='test.siteurl.com')
   define('ENVIRONMENT', 'testing');
else
   define('ENVIRONMENT', 'development');

根据环境变量使用配置部分我知道这是一个旧线程,但我现在正在从事一个Codeigniter项目,并且正在寻找一种好方法来维护两个环境,而不必在两个不同的URL上维护两个代码基。如果其他人正在寻找类似的答案,这里有一个可能的解决方案,允许您维护一个代码库

对于我当前的项目,我有siteurl.com和siteurl.com/sandbox

siteurl.com/index.php

define('ENVIRONMENT', 'production');
$system_path = '../system';
$application_folder = '../application';
define('ENVIRONMENT', 'development');
$system_path = '../../system';
$application_folder = '../../application';
siteurl.com/sandbox/index.php

define('ENVIRONMENT', 'production');
$system_path = '../system';
$application_folder = '../application';
define('ENVIRONMENT', 'development');
$system_path = '../../system';
$application_folder = '../../application';

因此,我必须将所有相同的文件和文件夹上载到live production根目录?不,当您更改环境变量时,放置在/application/config/development/中的任何文件都将覆盖/application/config/中的相同文件。这是因为您的生产环境与开发环境不同(数据库设置等)。你的问题是一个工作流问题吗?我的意思是我有我的dev.siteurl.com和我的siteurl.com,我必须上传两次相同的文件,不是吗?这是你需要通过工作流和集成解决的问题。最简单的方法是使用带有post接收挂钩的git,将master发送到一个文件夹,将dev发送到另一个文件夹。所以,是的,你最终会使用两个文件夹,但是git版本控制会解决这个问题。不完全是我想要的答案,因为我仍然不知道我应该做什么。