今天將自己代碼傳到線上服務器,頁面上用到很多thinkphp U() 方法生成的鏈接。本地測試沒啥問題,到線上發現鏈接生成的不對,每個都沒有了host
每個鏈接多個index,然後查看tp的U方法:
$url = __APP__.'/'.($module?$module.MODULE_PATHINFO_DEPR:'').implode($depr,array_reverse($var));
是因爲__APP__這裏的原因,然後找到__APP__賦值的地方:
define('__APP__',strip_tags(PHP_FILE));
和PHP_FILE有關,繼續找
= (,$_SERVER[]); (, (($_SERVER[],,[].),));
最後發現和$_SERVER["PHP_SELF"]有關係,這裏問題基本鎖定了,最後搜了下,這個值和php.ini的
cgi.fix_pathinfo配置有關係,把cgi.fix_pathinfo=1設置成0就OK了!U方法就正常了