使用CodeIgniter网站解决多服务器环境问题

Ale*_*lex 3 codeigniter

我有一个基于CodeIgniter的站点的本地,登台和生产环境.我越来越多地发现每次部署版本时,由于服务器的不同,我会有越来越多的代码需要更改.

我可以添加一个好的(和快速)解决方案,这将允许我通过使用一个设置来设置这些变量.哪个是在index.php中插入这个的最佳位置,某种钩子?

Cor*_*lou 6

如果您正在使用Apache,则可以设置一个环境变量,该变量可由PHP在该站点的虚拟主机文件中读取:

<VirtualHost *:80>
    DocumentRoot /path/to/site
    ServerName local.mysite.com
    ErrorLog /path/to/error_log
    CustomLog /path/to/access_log common
    <Directory /path/to/site>
        SetEnv ENVIRONMENT local
        RewriteEngine On
        Options FollowSymLinks Indexes
        AllowOverride AuthConfig Options FileInfo
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

因此,您现在可以在index.php文件中相应地检查和设置服务器环境:

// always default to production for safety
$environment = 'production';

// check for an environment override
if (function_exists('apache_getenv') && apache_getenv("ENVIRONMENT")) {
  $environment = apache_getenv("ENVIRONMENT");
} else if (getenv("ENVIRONMENT")) {
  $environment = getenv("ENVIRONMENT");
}

// set the environment constant
define('ENVIRONMENT', $environment);
Run Code Online (Sandbox Code Playgroud)

通过此设置,您现在可以自由地部署站点并application/config/[file].php为每个环境的文件添加其他配置参数.

另类...

处理多环境设置的另一种可能性是在文档根目录之外创建文件,并由包含服务器环境值的版本控制系统(即.gitignore)忽略.然后你可以通过file_get_contents()或等效的方式读取该文件.