热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LNMP环境运行codeigniter时出现noinputfilespecified的问题

Debian7.0+Nginx+PHP5-FPM+CodeIgniter,首页正常,点其他链接均是Noinputfilespecified,NginxWiki上以及其他网上的解决方案均无效。问题的核心是http://www/abc/def.php/1/2/3这种URL,要把/1/2/3作为PATH_INFO传给/abc
Debian 7.0 + Nginx + PHP5-FPM + CodeIgniter,首页正常,点其他链接均是No input file specified,Nginx Wiki上以及其他网上的解决方案均无效。 问题的核心是http://www/abc/def.php/1/2/3这种URL,要把/1/2/3作为PATH_INFO传给/abc/def.php,执行的还是/abc/def.php,其实如果不是/abc/def.php而是/index.php恐怕就没问题了,因为Debian中Nginx的默认配置文件处理php的location是这么写的(网上的资料一般也是这么写的):
location ~ \.php$ {
...
}
然后根的location是:
location / {
    try_files $uri $uri/ /index.php  # 原本最后一个是/index.html
}
结果就是,/abc/def.php/1/2/3匹配进了location /,然后找不到文件就给改写成了/index.php,然后/index.php不存在于是就显示No input file specified.
把匹配php的location改为:
location ~ \.php$|.+\.php/.+$ {
...
}
就OK了。

P.S.
1. php.ini里面的cgi.fix_pathinfo要设成0,否则有安全问题。
2. nginx使用fastcgi_split_path_info解决PATH_INFO的问题,把URL拆成两部分再设好变量SCRIPT_FILENAME和PATH_INFO的内容
3. 不清楚fastcgi_index index.php;是干什么用的,按location匹配进来的URL不都是带.php的么。
4. try_files的机制稍微有点怪,Nginx文档里说如果最后一个匹配,会做internal redirect,其他的是internal URI pointer。try_files $uri $uri/ /index.php时,访问/abc/def.php/1/2时会去找/index.php,访问/abc/的时候能找到/abc/index.php(应该是通过$uri/)。如果只写try_files $uri $uri/,访问/abc/的话却跳不到/abc/index.php(location外面已有index index.php),日志里说redirection cycle。如果是try_files $uri $uri/ =404;貌似就正常了。

推荐阅读
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • nginx+多个tomcat
    学习nginx的时候遇到的问题:nginx怎么部署两台tomcat?upstream在网上找的资源,我在nginx配置文件(nginx.conf)中添加了两个server。结果只显 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • 1、etcnginxconf.ddefault.conf,添加如下信息:location{try_files$uri$urirouter;rootho ... [详细]
author-avatar
袁立红第_593
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有