2016-08-24 22:43:46 7618次浏览 7条回答 1 悬赏 10 金钱

其实就是怎么判断 测试环境

defined ( 'YII_DEBUG' ) or define ( 'YII_DEBUG', true );
defined ( 'YII_ENV' ) or define ( 'YII_ENV', 'dev' );

或者是生产环境

defined ( 'YII_DEBUG' ) or define ( 'YII_DEBUG', false );
defined ( 'YII_ENV' ) or define ( 'YII_ENV', 'PRODUCTION' );

最佳答案

  • bryson 发布于 2016-08-25 11:39 举报

    參考 的作法

    以下為 $_SERVER 的舉例

    
    defined('YII_DEBUG') or define('YII_DEBUG', $_SERVER['SERVER_NAME'] == 'xxx.com' ? true : false);
    defined('YII_ENV') or define('YII_ENV', $_SERVER['SERVER_NAME'] == 'dev.xxx.com' ? 'dev' : ($_SERVER['SERVER_NAME'] == 'local.xxx.com' ? 'test' : 'prod'));
    
    
  • 回答于 2016-08-25 08:25 举报

    看你的生产环境和测试环境有什么不同;比如PHP_OS$_SERVER等等吧

  • 回答于 2016-08-25 22:59 举报

    两个方式吧
    1 服务器方面:
    如nginx 可以配置$_SERVER 变量为DEBUG = true,在程序中直接判断$_SERVER['DEBUG'];
    2 PHP版本上
    开发环境下 在php.ini下 添加 变量 DEBUG = true; php函数 get_cfg_var('debug') == 1则为开发环境

    1 条回复
    回复于 2016-08-31 10:32 回复

    正好想了解这个问题。学习了,多谢!

  • 回答于 2016-08-26 09:10 举报

    不要去做这样的事情,多一些if就多一些性能损耗,而且这种损耗是不可避免的,因为你把判断放在了入口。

  • 回答于 2016-08-26 09:34 举报

    我认为最简单的方法是在线上环境放一个文件,如dev.lock,入口判断一下是否有这个文件,进行设置环境。只有一步判断,性能影响可以忽略不计。

  • 回答于 2016-08-26 11:16 举报

    当你的项目部署完毕,你不应当尝试去改动他的入口文件index.php。除非你的项目一天换一台服务器。

    你应当把index.php从版本控制中去除,以保证push和pull时index.php不会受到本地或者线上环境的影响。

    而事实上,托管于github的YII也确实这么做了。

  • 回答于 2016-08-26 20:57 举报

    我们之前会使用环境变量来处理这个问题

您需要登录后才可以回答。登录 | 立即注册
38214
等待激活

38214

注册时间:2016-10-31
最后登录:1970-01-01
在线时长:0小时0分
  • 粉丝0
  • 金钱25
  • 威望0
  • 积分25

热门问题