Thinkphp 3.2 ACTION_NAME 用U函数 在不同服务器下显示不同路径

爱星雾月 发布于 2016/05/26 10:51
阅读 1K+
收藏 0

在LAMP 服务

IndexController.class.php 如下:


<?php
namespace Admin\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
      $this->assign("title","XXXXX");
      echo U(ACTION_NAME);
		  $this->assign('list',$list);
     	$this->display('./index');
    }
    public function cc(){
      $this->assign("title","XXXXX");
      echo U(ACTION_NAME);
		  $this->assign('list',$list);
     	$this->display('./index');
    }
}



分别访问地址:


http://XXXX.com/Admin 输出:/Admin/Index/index.html

http://XXXX.com/Admin/index/cc 输出:/Admin/Index/cc.html

上面在window服务器下面输出正常 

但是在LNMP下面 分别输出

http://XXXX.com/Admin 输出:/Admin/Index/index.html

http://XXXX.com/Admin/index/cc 输出:/Admin/index/Admin/Index/cc.html

在第二个访问的时候多出了“/Admin/index”;

这样的话导致我做分页的时候出现以下情况

链接地址前面重复出现/Admin/Article

进入第二页后 地址一直叠加

请问这个是什么问题?

是nginx.conf的配置问题?


server
        {

   listen       80;
   server_name *.XXXX.cn;
   index index.html index.htm index.php;

if ($host ~* ^([^\.]+)\.([^\.]+\.[^\.]+)$) {
        set $subdomain $1;
        set $domain $2;
    }

root /data/www/$domain/$subdomain;

location / {
                     index index.php;
                     if (!-e $request_filename) {
                         rewrite  ^/(.*)$  /index.php/$1  last;
                         break;
                     }
                 }

location ~ .+\.php($|/) {
            include fcgi.conf;
            set $script    $uri;
            set $path_info  "";
            if ($uri ~ "^(.+\.php)(/.+)") {
                set $script     $1;
                set $path_info  $2;
            }

            fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_index  index.php?IF_REWRITE=1;
            include fastcgi_params;
            fastcgi_param PATH_INFO $path_info;
            fastcgi_param SCRIPT_FILENAME  $document_root/$script;
            fastcgi_param SCRIPT_NAME $script;
        }

                 location /status {
                        stub_status on;
                        access_log   off;
                }

       location ~ ^/(upload|images|img|javascript|js|css|flash|media|static)/  {
          root /data/www/$domain/$subdomain;
          access_log  off;
          expires     30d;
        }


        }




加载中
0
爱星雾月
爱星雾月

没有人回答··哎


爱星雾月
爱星雾月
得到最后答案 是$_SERVER['PHP_SELF']的问题 对于$_SERVER['PHP_SELF'] 的值涉及很多,感谢回答的朋友
0
梁东坡
梁东坡
正常的话,U函数,不会出现想你那样的问题,是不是你分页的代码写的有问题
爱星雾月
爱星雾月
不是,在win服务器正常,稍后我发发 完整的
0
爱星雾月
爱星雾月

引用来自“智绘通软件”的评论

正常的话,U函数,不会出现想你那样的问题,是不是你分页的代码写的有问题
/**
 * @param $m 模型,引用传递
 * @param $where 查询条件
 * @param int $pagesize 每页查询条数
 * @return \Think\Page
 */
function getpage(&$M,$where,$Onecount=10){
    $M1=clone $M;//浅复制一个模型
    $count      = $M->where($where)->count();
    $M=$M1;
//$_SERVER["QUERY_STRING"];
    //print_r(I('get.'));
    $Page       = new \Think\Page($count,$Onecount);
    $Page->rollPage=8;
    $Page->lastSuffix=false;
    $Page->parameter=I('get.');
    $Page->setConfig('header','<div class="rows">共&nbsp;<b>%TOTAL_ROW%</b>&nbsp;条记录&nbsp;&nbsp;每页&nbsp;<b>'.$Onecount.'</b>&nbsp;条&nbsp;&nbsp;第&nbsp;<b>%NOW_PAGE%</b>&nbsp;页/共&nbsp;<b>%TOTAL_PAGE%</b>页</div>');
    $Page->setConfig('first','首页');
    $Page->setConfig('prev','上一页');
    $Page->setConfig('next','下一页');
    $Page->setConfig('last','末页');
    $Page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
    $M->limit($Page->firstRow,$Page->listRows);

    return $Page;

}

上面这个是分页的

$AuthGroup=M('AuthGroup');
		$where['status'] = 1;
		$Page=getpage($AuthGroup,$where,2);
		$show= $Page->show();
		$list = $AuthGroup->select();
	
		$this->assign('page',$show);// 赋值分页输出

上面这个是调用方式

0
SSSWIIILLL
SSSWIIILLL
这种事情也说不清楚的,你自己可以试着debugU方法看看每一步发生了什么,八九不离十就能找到原因
SSSWIIILLL
SSSWIIILLL
回复 @爱星雾月 : 所以说还是自己解决嘛,具体问题具体对待
爱星雾月
爱星雾月
查到不是U方法的问题 查到是这个__APP__的问题 __APP__又根据PHP_FILE来获取的,PHP_FILE 又根据$_SERVER['HTTP_HOST'] 或者$_SERVER['SCRIPT_NAME'] 问题就出在这里了··
返回顶部
顶部