最近一个项目使用了thinkphp3.2作为开发框架,路由方面开启了PATHINFO模式,但是nginx默认是不支持PATHINFO的,表现为$_SERVER['PATH_INFO']没有值

在apach下没有这样的问题,因为apach默认是设置了PATN_INFO变量的。在网上找了很多资料,有很多并不起作用,但参考它们之后成功解决问题,把我的方法分享给大家。

假设URL为:

www.yoursite.com/index.php/Home/Index/index.html

那么正确的PATH_INFO应该是:

/Home/Index/index.html

配置nginx

修改nginx配置文件:

解决thinkphp在nginx的路径问题,省得你遇到要花一天时间去研究

/etc/nginx/sites-enabled/yoursite

fasecgi_split_patn_info()是nginx新提供的一个方法,会根据规则创建$fastcgi_path_info变量。

使用命令重启nginx刷新页面就会发现PATH_INFO变量已经正确设置了。

sudo nginx -s reload

修改ThinkPHP.php

经过上面的调整,项目可以正常访问首页,但是使用U方法生成的链接却全都是错误的。这是因为,虽然PATH_INFO正确,但是会影响另一个值(具体原因不清楚),正确的$_SERVER['PHP_SELF']值应该是/index.php,但现在变成了/index.php/Home/Index/index.html。这个值在U方法中用于生成链接的前部分,所以导致了链接错误。

这个值使用的地方在框架文件ThinkPHP.php中:

解决thinkphp在nginx的路径问题,省得你遇到要花一天时间去研究

ThinkPHP/ThinkPHP.php

所以我们可以将此处替换为:

$_SERVER['SCRIPT_NAME']

或者也可以在入口文件index.php处直接定义:

define('PHP_FILE', $_SERVER['SCRIPT_NAME']);

问题解决。

解决thinkphp在nginx环境中由于PATH_INFO变量引起的路径问题相关推荐

  1. 解决VMware虚拟机Win7环境中office2016打字卡顿问题

    1.基础信息 VMware Workstation 版本:16.1.1 build-17801498 虚拟机操作系统:Windows 7 Office版本:Microsoft Office 2016专 ...

  2. php url模式在哪修改,如何在nginx环境中启用php的pathinfo URL模式[修正]

    我们在安装lnmp一键安装的时候,一般都没有开启pathinfo访问模式 这种模式在比较多的框架中用到,比如国人的ThinkPHP,还比如C写的Yaf也用到,不支持就比较可惜了. pathinfo的原 ...

  3. linux nginx php 目录权限,Nginx环境中配置网站目录权限设置

    在Nginx与php环境下,务必要设置好Nginx目录权限,安全的目录权限设置,将是网站安全的一道屏障,有需要的朋友做个参考吧. 配置权限的原则是,在保证网站正常运行下,尽量给最低权限. nginx目 ...

  4. 解决thinkphp在开发环境下文件模块找不到的问题

    win10系统下,phpstudy开发环境下小问题描述: 找不到public公共模块. Not Found The requested URL /public/admin/login.html was ...

  5. 解决:在conda环境中“install getorganelle”出现Solving environment: failed with initial frozen solve. 的报错。

    GetOrganelle是建军和郁文彬老师开发的一款全新的细胞器基因组组装工具,此工具实现了大规模细胞器基因组的快速.准确的"自动化"安装.对于像我这样的初学小白来说,在使用这款工 ...

  6. 解决uni-app在开发环境中H5端的跨域问题

    最近在做项目的时候遇到了一个小问题. 在开发阶段用uni-app开发H5页面时,在chrome浏览器预览页面,发现数据无法传到后台去,存在跨域问题,但用uniapp内置浏览器就可以访问后台. 找了很多 ...

  7. 解决:VS 2005/2008 中 fstream 不能处理带有中文路径的问题

    转自:http://blog.csdn.net/code_robot/archive/2010/06/23/5688867.aspx 有时候用ifstream或ofstream打开带有中文路径的文件会 ...

  8. openresty获取Nginx uri中的单一变量

    ip:端口/lua?a=100   获取100的值-- 直接在nginx.conf配置文件中获取请求url中参数a的值 : location /nginx_var {default_type text ...

  9. LAMP环境中Apache,MySQL,PHP的配置文件路径是什么

    在维护服务器的时候会经常去配置apache,mysql,php参数,这些参数的默认配置文件路径如下: apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下 apache配置文 ...

最新文章

  1. 为什么做了梦第二天想不起来_为什么做的梦总是想不起来?科学的解释是……...
  2. Delphi10 安装Graphics32
  3. SAP concur image download on request
  4. PopupWindow 使用详解(二) Popwindow 制作常见花哨效果
  5. 在dom最前面插入_JavaScript中的DOM
  6. android JNI(转)
  7. spring定时每天早上八点_SpringBoot 如何实现并发定时任务?
  8. 手机丢了,支付宝和微信里面的钱该怎么办?
  9. 无法定位程序输入点 except_python自制王者荣耀抽卡程序
  10. android技术牛人的博客[转]
  11. 爬虫千万条,守法第一条,爬虫不规范,亲人两行泪
  12. Java Web从入门到实战
  13. Coreseek开源中文检索引擎 coreseek-4.1 win7安装教程
  14. 四棱锥和三棱锥重叠求面数
  15. 对Slim 框架进行总结
  16. 文件传输协议:FTP和TFTP
  17. jmu-python-生日悖论
  18. 【计算机网络】TCP/IP协议(DNS协议、IP协议、TCP协议、UDP协议、三次握手、四次挥手)
  19. 微信公众平台接口调试工具json格式不对怎么搞_腾讯云和微信推出更快速的小程序开发平台,微信读书小程序作示范...
  20. 克拉拉新作品《深爱》七夕上映,独立洒脱实力诠释职场女性

热门文章

  1. cf不能全屏win7的解决方法_win7电脑输入法不能打字的解决方法
  2. 抽象类与接口的一个程序实现
  3. Android进程保活招式大全
  4. php使用file,PHP中is_file()函数使用指南
  5. httpclient异步发送请求_关于Tornado5.1:到底是真实的异步和还是虚假的异步
  6. mysql增加布尔字段_如何将布尔字段添加到MySQL?
  7. 内存映射IO (MMIO) 简介
  8. canopen服务器协议,CANopen
  9. 简单算法的举例c语言,计算机科学与技术系C语言程序设计22简单算法举例.PPT
  10. 如何将qmainwidget 客户区坐标_滋补品行业营销感悟之:如何将同行变成客户?