今天将自己代码传到线上服务器,页面上用到很多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方法就正常了