nginx下__APP__失效 或者錯亂

1.__APP__常量就是入口文件的路徑 :xxx.php 

2.通常在url中 域名__APP__/分組/控制器/操作方法

問題:但是在nginx + php5-fpm 環境中, 低版本nginx系統,不支持“1”的路由模式,在普通模式下,__APP__ ,index.php變成.php,或者


  ,


因爲app變量獲取不了


解決:問題就在ThinkPhp\ThinkPhp.php中

if(!IS_CLI) {     // 當前文件名     if(!defined('_PHP_FILE_')) {         if(IS_CGI) {             //CGI/FASTCGI模式下             $_temp  = explode('.php',$_SERVER['PHP_SELF']);             define('_PHP_FILE_',    rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));         }else {             define('_PHP_FILE_',    rtrim($_SERVER['SCRIPT_NAME'],'/'));         }     }     if(!defined('__ROOT__')) {         $_root  =   rtrim(dirname(_PHP_FILE_),'/');         define('__ROOT__',  (($_root=='/' || $_root=='\\')?'':$_root));     } }

雖然 IS_CGI,但是 $_SERVER['PHP_SELF'] 是空的,$_SERVER['SCRIPT_NAME']纔有值。
我把
if(IS_CGI) {

這一行改成了 if(IS_CGI && !empty($_SERVER['PHP_SELF'])) {

再把      $_temp  = explode('.php',$_SERVER['PHP_SELF']);

變成$_temp  = explode('.php',$_SERVER['SCRIPT_NAME']);


就可以了








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章