非常惭愧的说,由于之前一直使用的是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

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

  1. Myeclipse开发环境下文件中出现的提示错误与解决方法:The import javax.servlet cannot be resolved?

    1.开发工具:MyEclipse 2.右击项目  >>  Build Path  >>  Add External Archives (Tomcat  >>  li ...

  2. iis7下配置php出现404.17错误的解决办法

    服务器上建有几个PHP站点,都在正常运行.今天又新建了一个PHP站点,处理程序模块配置的和其他几个都一样,但就是跑不起来,一直提示404.17错误,重启服务器也不行. 最后实在没办法了,就把正常运行站 ...

  3. nginx 配置虚拟主机访问PHP文件 502错误的解决方法

    最近配置Nginx 服务器虚拟主机 访问目录发现报502错误 百度了很多方法 都不管用  我擦 各种抓狂----- 原本Nginx配置如下: 网上找了很多方法: 查看日志   借助nginx的错误日志 ...

  4. thinkphp 5.0 lnmp环境下 无法访问,报错500(public目录)

    两种方法: 1.修改fastcgi的配置文件 /usr/local/nginx/conf/fastcgi.conf fastcgi_param PHP_ADMIN_VALUE "open_b ...

  5. nginx环境下配置nagios-关于nagios配置文件nginx.conf

    接上文:nginx环境下配置nagios-关于nginx.conf 配置如下: ;          location ~ .*\.(php|php5)?$          {            ...

  6. nginx环境下配置nagiosQL-关于nagiosql配置文件

    接上文:nginx环境下配置nagios-关于nginx.conf nagiosql文件应该处于conf/domain/目录下 nagiosql配置如下: ;                  gzi ...

  7. Nginx环境下配置PHP使用的SSL认证(https)

    最近一段时间发现好多网站都从http协议变成了加密的https协议,比如说百度.吾志等等.https看起来比http高端了好多,而且在不同的浏览器向上还会显示出不同于http的URL展示效果(比如说c ...

  8. nginx环境下启动php-fpm

    nginx环境下启动php-fpm 1.首先查看是否安装了php-fpm 这个我试了好多命令都不行比如 rpm -qa php-fpm , rpm -ql php-fpm , which php-fp ...

  9. CI在nginx环境下去掉url中的index.php

    在nginx环境下CI框架默认URL规则访问不了,出现500错误,如: http://blog.php230.com/index.php/keywords 今天在服务器配置CI框架环境时,去除URL中 ...

随机推荐

  1. mysql的数据类型int、bigint、smallint 和 tinyint取值范围

    使用整数数据的精确数字数据类型.   bigint   从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字 ...

  2. losbyday Linux下的强大工具之一akw(转),Shell必备

    简单使用:awk :对于文件中一行行的独处来执行操作 .awk -F :'{print $1,$4}'   :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 .  详细介绍:AWK命令介绍 a ...

  3. OC语言的特性(二)-Block

    本篇文章的主要内容 了解何谓block. 了解block的使用方法. Block 是iOS在4.0版本之后新增的程序语法. 在iOS SDK 4.0之后,Block几乎出现在所有新版的API之中,换句 ...

  4. IP头,TCP头,UDP头,MAC帧头定义(转)

    源:IP头,TCP头,UDP头,MAC帧头定义 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { ]; //目的m ...

  5. STM32驱动MPU6050

    轴 MEMS轴 MEMS 加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion Processor),可用 I2C 接口连接一个第三方的数字传感器,比如磁力计.扩展之后就可以 ...

  6. ecshop中ajax的调用原理 1

    ecshop中ajax的调用原理   1:首先ecshop是如何定义ajax对象的. ecshop中的ajax对象是在js/transport.js文件中定义的.里面是ajax对象文件.声明了一个va ...

  7. Oracle安装卸载

    http://study.163.com/course/courseLearn.htm?courseId=932016#/learn/video?lessonId=1115367&course ...

  8. 【python之路11】集合数据类型(set)

    集合数据类型(set):集合是不重复的无需序列 1.集合数据类型的创建 a = {11,22,33} #或 a = set() #创建空集合,不能用a={},这样创建的是字典类型 2.集合转换(将可迭 ...

  9. javascript-变量-作用域

    1.var message;   ----这样定义的变量值为undefined 2.去掉var则为全局变量--message = “100”: 3.function fun(){ var messag ...

  10. Android实现版本更新

    Android 实现从后台下载apk文件,保存到本地sd卡,使用系统安装apk,完成版本更新功能 LoadAppUtil.java import java.io.File; import java.i ...