Nginx服务器下使用ThinkPHP的pathinfo模式的问题
2015-04-28 13:01
369 查看
LNMP一键安装包装上过后,发现thinkphp的pathinfo模式无法使用。
百度一番,发现nginx/conf/vhost/域名 文件里有开启pathinfo的说明,于是启动了pathinfo。
但是项目仍然无法运行,于是我在本地和服务器同时运行了一下代码:
发现PHP_SELF这一项有区别,so问题可能就在这里。
接下来在项目里搜索PHP_SELF,找到了这个文件:
ThinkPHP.php
也就是ThinkPHP在cgi模式下依赖了PHP_SELF,问题果然在这里
最后又百度了一番,原来是php.ini里为了屏蔽一个漏洞设置了:
正是因为这一行设置,导致了PHP_SELF的值出现了偏差。
然而LNMP集成包里的pathinfo.conf已经使用
解决了这个漏洞,所以我们可以修改php.ini为
重启服务器,OK,问题解决
百度一番,发现nginx/conf/vhost/域名 文件里有开启pathinfo的说明,于是启动了pathinfo。
但是项目仍然无法运行,于是我在本地和服务器同时运行了一下代码:
<?php var_dump($_SERVER);
发现PHP_SELF这一项有区别,so问题可能就在这里。
接下来在项目里搜索PHP_SELF,找到了这个文件:
ThinkPHP.php
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'],'/')); }
也就是ThinkPHP在cgi模式下依赖了PHP_SELF,问题果然在这里
最后又百度了一番,原来是php.ini里为了屏蔽一个漏洞设置了:
cgi.fix_pathinfo=0
正是因为这一行设置,导致了PHP_SELF的值出现了偏差。
然而LNMP集成包里的pathinfo.conf已经使用
try_files $fastcgi_script_name =404
解决了这个漏洞,所以我们可以修改php.ini为
cgi.fix_pathinfo=1
重启服务器,OK,问题解决
相关文章推荐
- nginx低版本不支持pathinfo模式,thinkphp针对此问题的解决办法
- thinkphp在Nginx下使用PATHINFO模式显示no input file specified的解决方法
- 关于 ThinkPHP 在 Nginx 服务器上 使用U方法跳转问题
- nginx 配置https(可支持thinkphp的pathinfo模式)
- 运维之高级服务篇------ 4.Nginx常见问题处理、安装部署Tomcat服务器 、使用Tomcat部署虚拟主机
- [转]Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
- Thinkphp3.2对于URL访问模式PATHINFO 模式导入css,js文件冲突问题详解
- 解决无法使用http访问安装好nginx和ftp的图片服务器的问题
- Mac下使用nginx反向代理服务器解决资源跨域问题
- Nginx下配置ThinkPHP的URL Rewrite模式和pathinfo模式支持
- LNMP 配置NGINX 支持THINKPHP PATHINFO模式
- [省了index.php看这] Nginx下支持ThinkPHP的Pathinfo和URl Rewrite模式
- 解决nginx不支持pathinfo Thinkphp命名空间问题
- tomcat服务器下使用nginx实现最简单的动静分离--解决css、js不加载的问题
- tomcat服务器下使用nginx实现最简单的动静分离--解决css、js不加载的问题
- Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
- Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
- 解决 thinkphp 在不支持 pathinfo 的 nginx 上的问题
- LNMP 配置NGINX 支持THINKPHP PATHINFO模式
- 使用nginx解决一台服务器中ws协议与wss协议共存问题 2017-07-09 13:29:06