今日不熟一个tiinkphp框架网站的时候,由于服务器环境是centos6.5+nginx1.8,已经运行php商城项目很正常,
本以为一切比较简单,直接新建了项目文件夹,xftp上传了程序,并配置nginx.conf文件,添加新的server块,
绑定了子域名跟项目文件夹的关系,一开始访问是No input file specified页面报错,很显然是联想到是不是php文件
解析不成功造成了,检查新添加的server块,一切配置正常,为发现明细错误,php引擎调用也是复制原来php项目的
应该出不来问题的,就是这个问题上徘徊了很近,偶然发现网上这个问题其实狠毒,基本大概的都是修改php location
的fastcgi_param 的值,并添加include fastcgi_param ,但是fastcgi_param的值的修改又有好几种说法,经过多次尝试之后
修改如下:
fastcgi_param SCRIPT_FILENAME/data//wwwroot/default/victdo_ws/$fastcgi_script_name; include fastcgi_params;
reload配置文件,访问页面这次报错编程了access denied,访问被拒绝,查看了error日志没有发现错误提示,继续百度,
最终发现thinkphp框架的网址需要修改php环境的一个参数,引起问题的原因可能是:ThinkPHP
的URL_MODEL
问题导致ngnix解析问题。
于是我是这样解决的:
进入服务器,改php.ini
文件。将cgi.fix_pathinfo
的值改成1
。重启php-fpm。
结果终于访问正常了。解决问题。至此thinkphp框架的网站可以访问了,接下来研究了下cgi.fix_pathinfo
似乎这个配置如果改成1形成一个上传漏洞,具体大家可以百度参考下,所以接下来我把nginx配置文件进一步修改
修改为php文件在上传目录的执行,也就是如下代码:值得注意的是这个代码需要添加php文件解析location块之前,否则无效!
location ~ ^/public/.*\.(php|php5)$ { deny all; }