• 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;
    
            }
    }

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

  • 相关阅读:
    php打印出10*10表格
    php打印出1到2000年之间所有的闰年
    借鉴一篇好文章
    女程序员的预备篇
    SQL存储过程删除数据库日志文件的方法
    Mongodb无法访问28107的问题
    使用 xsd.exe 命令工具将 xsd 架构生成 类(CS) 文件
    C# 用POST提交json数据
    WinForm 使用 HttpUtility
    Sql Server 分区之后增加新的分区
  • 原文地址:https://www.cnblogs.com/two-bees/p/10819876.html
Copyright © 2020-2023  润新知