设为首页 收藏本站
查看: 1063|回复: 0

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

[复制链接]

尚未签到

发表于 2017-12-23 19:50:00 | 显示全部楼层 |阅读模式
  非常惭愧的说,由于之前一直使用的是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使用
DSC0000.png

  访问的时候会出现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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-427285-1-1.html 上篇帖子: nginx配置https并强制http自动跳转到https 下篇帖子: pagespeed模块安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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