基于 iTop 2.7.0-2 做定制时,如果 PHP 代码有错误,用 toolkit 更新时可能导致停留在 env-toolkit
环境,即:
- 在
extensions
下修复报错的代码,用 toolkit 依然不能更新,会报错env-toolkit/xxx/xxx.php
下有错误 - 删除
env-toolkit
目录,会导致无法进入,程序会读取env-toolkit
下的文件,而不是env-production
相找到关代码,在 application/startup.inc.php
中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
session_name('itop-'.md5(APPROOT)); session_start(); $sSwitchEnv = utils::ReadParam('switch_env', null); $bAllowCache = true; if (($sSwitchEnv != null) && (file_exists(APPCONF.$sSwitchEnv.'/'.ITOP_CONFIG_FILE)) && isset($_SESSION['itop_env']) && ($_SESSION['itop_env'] !== $sSwitchEnv)) { $_SESSION['itop_env'] = $sSwitchEnv; $sEnv = $sSwitchEnv; $bAllowCache = false; // Reset the opcache since otherwise the PHP "model" files may still be cached !! if (function_exists('opcache_reset')) { // Zend opcode cache opcache_reset(); } if (function_exists('apc_clear_cache')) { // APC(u) cache apc_clear_cache(); } // TODO: reset the credentials as well ?? } else if (isset($_SESSION['itop_env'])) { $sEnv = $_SESSION['itop_env']; } else { $sEnv = ITOP_DEFAULT_ENV; $_SESSION['itop_env'] = ITOP_DEFAULT_ENV; } |
用 var_dump
打印当前环境,可以看到是 toolkit
,不清楚具体是什么原因,但是从代码可知,加上参数 switch_env=produciton
即可强制切换到 production
环境,解决以上问题。
发表回复