最近用了lnmp一键安装包1.2版本,然后搭建的ThinkPHP程序无论如何都不能用pathinfo模式。网上找了很多解决方案,最后发现了问题所在。
1、lnmp一键安装包的php.ini里面cgi.fix_pathinfo=0。而php正常安装的话这个值是默认为1的。如果你用lnmp一键安装包必须要修改成1才行,当然你也可以修改Thinkphp源码。
2、修改你的配置文件,注释掉try_files $uri =404;打开include pathinfo.conf;然后把URL_MODEL=1就能支持pathinfo了。
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
#try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
3.如果你觉得cgi.fix_pathinfo=1不安全可以用REWRITE模式
在虚拟主机root那一行下面加上
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
4.导致pathinfo不能用的原因是cgi.fix_pathinfo=0的时候$_SERVER['PHP_SELF']是获取不到index.php的。
而Thinkphp的源码
if(IS_CGI) {
//CGI/FASTCGI模式下
$_temp = explode('.php',$_SERVER['PHP_SELF']);
define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));
}else {
define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'],'/'));
}
由于$_SERVER['PHP_SELF']获取不到index.php所以$_temp是空,导致_PHP_FILE_为.php,U函数生成的地址也是.php这样无法访问的地址。如果你不想修改PHP的配置就只能修改这里的源码。把上面的if里面修改成和else下面一样的就可以了。
分享到:
相关推荐
【ThinkPHP3.2.x RCE漏洞通报】中提到的安全问题涉及到ThinkPHP 3.2版本的一个严重远程代码执行漏洞。这个漏洞源于框架中的`assign`方法,该方法用于将变量传递给模板进行渲染。当攻击者能够控制`assign`方法的第一...
调用方式很简单 get_sc($cover_id,[$width=180,$height=auto,$cut]) @param $cover_id 图片ID___ ...可以替换get_cover($cover_id,'path'); get_cover里做了简单的默认图片判断,大家可以自己改一下。
《深入理解ThinkPHP3.2框架》 ThinkPHP,作为国内广泛应用的PHP开发框架,以其简洁、高效和易用性赢得了开发者们的喜爱。本篇将详细介绍ThinkPHP3.2版本,该版本在2013年12月31日进行了更新,其环境要求为PHP5.3及...
达梦DM数据库Thinkphp3.2驱动类Dm.class.php thinkphp3.2的mysql数据库迁达梦数据库 TP3.2+DM数据库改造要用到的达梦数据库驱动类
在这个场景中,"ThinkPHP v5.x命令执行利用工具(可getshell)"指的是一个专门针对ThinkPHP v5.x版本的安全漏洞进行利用的工具,该工具能够使得攻击者通过命令执行漏洞获取服务器的shell访问权限。 命令执行漏洞...
thinkphp帮助手册3.2.版非常好用!
**Ueditor for Thinkphp3.2** 是一个集成百度Ueditor编辑器的Thinkphp3.2框架下的插件。这个插件使得在Thinkphp3.2的项目中,开发者能够轻松地引入强大的富文本编辑功能,为用户提供一个美观且功能丰富的在线文本...
此外,ThinkPHP 3.2的AOP(面向切面编程)支持,允许开发者在不修改原有代码的情况下,添加新的功能或修改现有行为。 总的来说,《ThinkPHP3.2完全开发手册》是一本全面且深入的指南,无论是初学者还是有经验的...
### ThinkPHP 5.0.x/5.1.x 变量覆盖远程代码执行(RCE)漏洞分析 #### 漏洞概述 ThinkPHP 5.0.x 和 5.1.x 版本中存在一个变量覆盖导致的远程代码执行(RCE)漏洞。该漏洞利用者可以通过对特定HTTP请求参数的精心...
在这个“thinkphp3.2-API 接口开发分享”中,我们将深入探讨如何使用ThinkPHP 3.2框架进行API接口的开发,以及涉及的API验证技术。 首先,ThinkPHP 3.2是一款流行的开源PHP框架,它提供了丰富的MVC(Model-View-...
ThinkPHP3.2是ThinkPHP框架的第三个大版本,它在2.x的基础上进行了大量优化和改进,引入了更多的设计模式和最佳实践。该框架遵循“大道至简”的原则,提供了诸如自动路由、模型绑定、行为扩展、缓存管理等众多功能,...
在ThinkPHP5.x中,可能存在这样的情况:当开发者使用某些特定的函数或方法时,如果没有正确地处理用户输入,就可能导致恶意代码被执行。例如,使用`exec()`、`system()`等函数时,如果用户提交的数据没有被安全地...
《ThinkPHP3.2自学开发手册》是一本专注于讲解ThinkPHP3.2版本的编程书籍,旨在帮助开发者快速掌握这一流行的PHP框架。ThinkPHP是中国的一个开源PHP框架,它以其简洁、高效、易学的特点,受到了广大PHP开发者的喜爱...
一套基于ThinkPHP3.2开发的后台管理系统cms.rar 。通用管理后台是一个管理后台的基础程序,使用ThinkPHP框架开发,包括管理员的登录;管理员的增加修改删除、权限分配、操作记录基础功能。包括后台功能菜单的新增...
《ThinkPHP v3.2.X 反序列化漏洞与SQL注入及文件读取利用分析》 ThinkPHP是一款广泛使用的PHP框架,其3.2.*版本存在反序列化漏洞,允许攻击者通过精心构造的数据包触发特定行为,如SQL注入和文件读取。本文将深入...
同时,ThinkPHP3.2框架内置的错误处理和日志记录功能,有助于及时发现和解决运行中的问题,确保系统的稳定运行。 总结来说,这款驾校在线考试系统是教育信息化的优秀实践,结合了ThinkPHP3.2框架的优势,为驾驶学员...
在本篇文章中,我们将详细探讨如何在ThinkPHP3.2中实现Excel的导入与导出。 首先,我们要理解Excel导入导出的原理。Excel文件本质上是存储在磁盘上的二进制文件,主要有.XLS和.XLSX两种格式,其中XLSX基于Open XML...
ThinkPHP3.2整合七牛云最新第三方sdk,版本Release v7.1.3 详情:http://blog.csdn.net/baikeliang/article/details/58619655
### ThinkPHP3.2入门指引 #### 一、ThinkPHP3.2简介 ThinkPHP3.2是一款基于PHP语言的轻量级Web开发框架,它旨在简化开发过程,提高开发效率,让开发者能够更加专注于业务逻辑而非底层架构。ThinkPHP3.2提供了丰富...
总的来说,ThinkPHP 3.2 结合Webuploader的分段上传方法是解决大文件上传问题的有效方案,它提高了上传的稳定性和效率,同时也提升了用户体验。开发者需要理解分片上传的原理,熟悉ThinkPHP的控制器机制,以及...