【问题标题】:How to properly use Git. Using CodeIgniter w/ DEVELOPMENT, TESTING, and PRODUCTION servers如何正确使用 Git。使用带有开发、测试和生产服务器的 CodeIgniter
【发布时间】:2017-11-08 17:38:51
【问题描述】:

基本上,我有一个文件index.php,在每个服务器中应该是不同的。该文件指示它在哪个服务器上。

它有这样的东西:

开发环境中:

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

TESTING环境中:

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'testing');

生产环境中:

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'production');

在没有 Git 接触的情况下,在每台服务器上维护这些文件的正确方法是什么?

我现在已将文件添加到 .gitignore,并使用 git rm --cached index.php 取消跟踪,然后使用 git push origin master 用于 TESTING 服务器,stable 用于 PRODUCTION 服务器。

【问题讨论】:

  • 你已经做了必要的事情来让这些文件远离 Git,现在你面临什么问题
  • @Rahul 我担心如果我从我的开发仓库拉到我的测试服务器,测试服务器会删除 index.php 文件。它会删除文件吗?因为我不想要它。我只是想停止跟踪它。
  • 好吧,如果它未被跟踪,我认为它不会删除测试服务器上的 index.php
  • @Rahul 这是我现在尝试拉到我的测试服务器时遇到的错误:imgur.com/a/NSuto
  • 我看不到图片,因为访问被拒绝,您能否上传到其他地方

标签: php git codeigniter


【解决方案1】:

仅供参考,

如果您使用 apache,您实际上不必更改 index.php 文件,因为您可以使用您的 htaccess 文件来定义您的环境

例如:

SetEnvIf Host yourdevdomain$ CI_ENV=development
SetEnvIf Host yourtestdomain$ CI_ENV=testing
SetEnvIf Host example.com$ CI_ENV=production

在这种情况下,你可以在你的 htaccess 文件中设置你需要的 Environments,你不必担心用来自不同环境的不同文件覆盖一些东西。

我认为nginx也有一个选项

看看here

您可以从官方 CI 文档here 获取更多信息。

【讨论】:

  • 天哪。要是我早点知道就好了……那么,如果我确实对 .htaccess 文件进行了此类更改,我该怎么处理 index.php?
  • 哦,我可以保持原样吗?因为它只会更改尚未设置的 ENVIRONMENT 常量,对吧?
  • 因此,我可以重新跟踪 index.php,对吗? (通过从 .gitignore 文件中删除它)
  • 我不是 GIT 专家,但我想是的
  • 这个非常好的答案的一个潜在问题是 Apache 服务器可能没有启用 mod_env 模块。如果这是真的,那么CI_ENV 值将不会传递给脚本。我在一些共享主机环境中遇到过这种情况。
【解决方案2】:

使用 Apache,您可以像 @sintakonte 的回答一样设置 CI_ENV。使用 nginx 和 php-fpm 你可以像这样设置 CI_ENV:

location ~ \.php {
    ....
    fastcgi_param CI_ENV production;
}

并将 index.php 文件保留为默认值。

干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多