最近用了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下面一样的就可以了。
分享到:
相关推荐
3.寻找程序上传,上传件 1.功能代码中的assign法中第个变量为可控变量: 3.赋值结束后进display法中,display法开始解析并获取模板件内容,此
调用方式很简单 get_sc($cover_id,[$width=180,$height=auto,$cut]) @param $cover_id 图片ID___ ...可以替换get_cover($cover_id,'path'); get_cover里做了简单的默认图片判断,大家可以自己改一下。
ThinkPHP3.2完整版, 2013-12-31更新 环境要求:PHP5.3+ 支持SAE等云平台
thinkphp帮助手册3.2.版非常好用!
ThinkPHP v5.x命令执行利用工具(可getshell)
thinkphp 3.2版本手册,在别处下载的好多不能用 这个绝对可以用的
百度Ueditor,支持Thinkphp3.2。官网上有,在这用来存档,如果你需要,也可以下载。
Thinkphp 5.0.x_5.1.x 变量覆盖 RCE 漏洞分析1
ThinkPHP3.2自学开发手册
ThinkPHP3.2整合七牛云最新第三方sdk,版本Release v7.1.3 详情:http://blog.csdn.net/baikeliang/article/details/58619655
使用Thinkphp3.2进行多文件上传下载管理.上传类型无限制,
驾校在线考试系统 手机+PC+平板 自适应 Thinkphp3.2在线考题源码下载
Thinkphp3.2开发的API后台管理系统
最近新推了thinkphp3.2版本的.是thinkphp3.1.2的改进版.主要增加了模块化、驱动化和云平台.
因为要做一个项目,项目需要集成微信APP支付,框架用thinkphp3.2开发,微信支付V3版本,由于网站大部分资料都是来源于thinkphp与v2版本的整合,好多写的V3版本的下载之后都是V2版本的,太多的坑啊,下载了V3版本之后...
最新的Thinkphp3.2完全开发手册
thinkphp3.2 webuploader较大视频文件分段上传方法demo,大视频分段上传,上传完成后又将分段视频合并成一个视频文件。
ThinkPHP3.2入门指引,使使用者对tp3.2有一个初步的认识,对初学者来说是一个很好的帮助文档(老司机勿下)
基于thinkphp3.x的学生社团管理系统项目源码下载
该框架为thinkphp3.2,包含MVC模式及核心函数,是thinkphp入门开发人员的不二之选。