Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 862|回复: 0

【thinkphp 5 在nginx 环境下路由无法生效(404 500错误 )的解决方法】

[复制链接]
  • TA的每日心情
    奋斗
    7 天前
  • 签到天数: 803 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726482
    发表于 2021-4-29 15:36:21 | 显示全部楼层 |阅读模式
     

    非常惭愧的说,由于之前一直使用的是windowservice,安装apache来进行服务器布置的,这种方式也是最简单最直接的方式,

    但是由于php的服务大多都是linux栈的,咱们也不能落后呀,在写了php半年之后,开始拥有的自己的第一台centos的服务器,

     

    实话说,centos真的是简洁,部署完成 php ,mysql,nginx,ftp之后只是使用的1g的空间,服务器开启的时候cpu占用率还不到3%【1核1G20g最低配服务器】

     

    原本是想先把这个服务器当做api服务器来使用,于是选用的了(传说中适合api 的 thinkphp 框架)

     

    一起准备就绪,选择最新的稳定版tp5,下载,配置域名,文件入口,隐藏路径……

     

    写完第一个controller 发现,卧槽,

     

    404了?

     

    仔细阅读文档,没毛病呀

    tp5已经默认url_model是兼容模式了呀,为什么还是访问不到呢?

     

    万能的百度让我发现很多人都是这种问题,但是 很多都是tp5以前的版本,配置文件写起来不一致,错误了n次

    于是自己找文件,仔细阅读:

     

     

    参考文献:http://www.9958.pw/post/nginx_config

     

    重点

     

    我发现:

    由于nginx不支持pathinfo导致在thinkphp使用

    访问的时候会出现404错误,

    这个时候你要看看自己的nginx的config文件

    location ~ \.php${
    	fastcgi_psaa 127.0.0.1:10000;
    	include fastcgi.conf
    }
    

    这是我的config文件

    配置也是极其简单,这个时候我们要逐步的改这个配置文件

     

     先贴最终的 文件【注意:不要直接复制粘贴】

    location ~ \.php/?.* {
    	fastcgi_pass   127.0.0.1:10000;
            fastcgi_index index.php;
            set $path_info ὀ~\ὀ~];
            set $real_script_name $fastcgi_script_name;
            if ($fastcgi_script_name ~ ὀ~\^(.+?\.php)(/.+)$ὀ~]) {
            set $real_script_name $1;
            set $path_info $2;
            }
            fastcgi_param SCRIPT_FILENAME /www_amiku_cn$real_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;
            include fastcgi.conf;
    }
      
    

      

     首先

    location ~ \.php${
    

      改为

    location ~ \.php/?.* {
    

    这样,用url在访问您的网站的时候就能够识别所有的网址

    接下来

    fastcgi_psaa 127.0.0.1:10000;
    

     这一句要大家根据自己的端口号来填写,不需要改,切记不要随意复制粘贴

    接着在你原有的配置中删除其他项

    替换成pathinfo及地址匹配方法

            set $path_info ὀ~\ὀ~];
            set $real_script_name $fastcgi_script_name;
            if ($fastcgi_script_name ~ ὀ~\^(.+?\.php)(/.+)$ὀ~]) {
            set $real_script_name $1;
            set $path_info $2;
            }
            fastcgi_param SCRIPT_FILENAME /www_amiku_cn$real_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;    
    

     最后,

    把原本的include的方法补上【注意】

    【注意】在include的的时候注意要确认自己的文件名称

    我这里的是

    fastcgi.conf
    

    有些人的是

    fcgi.conf
    

    是不一样的,注意不要填错

    接着:wq保存修改

     

    reload 一次即可

     

    这样thinkphp在nginx环境下就能正常访问及debug了

     

    最后附上nginx去掉index.php的方法

    同理,加载nginx.conf的location后面即可

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

     

     

    最后:感谢大神的参考资料:http://www.9958.pw/post/nginx_config

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-24 14:34 , Processed in 1.108310 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表