• tp5在Linux下Nginx配置问题解决


    以前是在本地windows开发,现在将个人项目在虚拟机的linux下开发,但是就遇到了访问其他模块总是index的问题。

    这个项目在阿里云服务器运行良好,但是现在却出问题,一样的代码、配置,就只能出在环境问题上。

    上网查看了下,也有人遇到这种问题。

    原因:thinkphp的url访问:http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值...],这个需要支持pathinfo,Apache默认支持,而Nginx不支持。

    解决:

    1.php.ini中的配置参数cgi.fix_pathinfo = 1
    2.修改nginx.conf文件。

    location ~ .php(.*)$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
    #下面两句是给fastcgi权限,可以支持 ?s=/module/controller/action的url访问模式
                fastcgi_split_path_info  ^((?U).+.php)(/?.+)$;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    #下面两句才能真正支持 index.php/index/index/index的pathinfo模式
                fastcgi_param  PATH_INFO  $fastcgi_path_info;
                fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
                include        fastcgi_params;
            }

    3. 去掉/index.php/

    修改nginx.conf文件

    location / {
    index index.html index.htm index.php;
    #autoindex on;
    
    if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php?s=/$1 last;
    break;
    }
    }

    最终nginx的vhost.conf文件配置:

    server {
            listen       80;
            server_name  vbox-lh.cn;
            root   "/media/sf_Project/self/rbz_tp5/public";
            location / {
                index  index.php index.html index.htm;
                if (!-e $request_filename){
    rewrite  ^(.*)$  /index.php?s=/$1  last;
                break;
                                            }
                #autoindex  on;
            }
            location ~ .php(.*)$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
    #下面两句是给fastcgi权限,可以支持 ?s=/module/controller/action的url访问模式
                fastcgi_split_path_info  ^((?U).+.php)(/?.+)$;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    #下面两句才能真正支持 index.php/index/index/index的pathinfo模式
                fastcgi_param  PATH_INFO  $fastcgi_path_info;
                fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
                include        fastcgi_params;
    
            }
    }

    遇到这样的问题,确实蛮奇葩的。不过,就怕遇不到问题不是么...

  • 相关阅读:
    图书 "ERP理论 方法与实践" 目录
    能为农村的家乡做些什么
    利用 wz_jsgraphics.js 画线
    在WebService中使用简单的自定义SoapHeader
    VS2005 自带的 DHTML 参考
    GridView控件 Image控件 与图片的二进制数据库存储和显示
    js 图片 拖动 复制
    [文摘20070706]国内外IT相关知名的企业或组织
    操作Word模板文件.dot 结合具体数据 生成Word文档 .doc
    Android:如何显示网络图片(转)
  • 原文地址:https://www.cnblogs.com/two-bees/p/10819876.html
Copyright © 2020-2023  润新知