thinkphp部署在nginx下 500错误或404错误解决办法

nginx是一个高性能并发的服务器软件,配置方面要稍微比apache复杂一点点。
本地部署成功的一个thinkphp框架,部署到服务器的时候,刚开始因为权限问题抛出404错误,然后chown之后,抛出了500的错误,但是首页能够访问。
复查,应该是伪静态rewrite出现问题了,找了好多文献,解决方案如下:

应该将

location ~ .*\.(php|php5)?$
{
#fastcgi_pass  unix:/tmp/php-cgi.sock;
fastcgi_pass  127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}

更改为:

location ~ \.php
{
fastcgi_pass   127.0.0.1:9000;
fastcgi_index index.php;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME /mnt/khdb1/wwwroot$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
include  /alidata/server/nginx/conf/fastcgi_params;
}

解决方案的思路:是由于在配置站点的时候,conf文件应该将整个对服务器的请求更改路径,即从“ location ~ \.php” 这个开始的大括号内的,默认的nginxlocation行头location ~ .*\.(php|php5)?$也要改。包括第一行的location都要修改为最上面。就可以解决抛出的500服务器错误“thinkphp 500错误”

nginx下运行出错404错误-找不到文件解决办法

解决方法一:修改ThinkPHP设置,不使用PATH_INFO

解决方法二(推荐):修改nginx设置,支持PATH_INFO

修改nginx.conf和fastcgi-params

php geshi">

location ~ \.php$ {

修改为

location ~ \.php/?.*$ {

fastcgi_param SCRIPT_FILENAME $document_root2$fastcgi_script_name;

修改为

set $fastcgi_script_name2 $fastcgi_script_name;
if ($fastcgi_script_name ~ “^(.+?\.php)(/.+)$”) {
set $fastcgi_script_name2 $1;
set $path_info $2;
}
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root2$fastcgi_script_name2;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

修改为

fastcgi_param SCRIPT_NAME $fastcgi_script_name2;

完整的nginx虚拟主机区块配置如下:

server {
listen 80;
server_name www.amiku.cn amiku.cn;
root /www_amiku_cn;
include /www_amiku_cn/.htaccess;
index index.html index.htm index.php;
location ~ .*\.(php|php5)/?.*$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_split_path_info ^(.+\.php)(.*)$;
#fastcgi_param PATH_INFO $fastcgi_path_info;
set $path_info “”;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ “^(.+?\.php)(/.+)$”) {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME /www_amiku_cn$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
include fcgi.conf;
}
}

另外附贴修改过的.htaccess,以满足nginx的伪静态和apache服务器的规则不同。

#RewriteEngine on
#RewriteRule ^index.html$ index.php/Index/index
#RewriteRule ^([A-Z][a-z]+).html$ index.php/$1/index
#RewriteRule ^([A-Z][a-z]+)-([a-z]+).html$ index.php/$1/$2
#RewriteRule ^([A-Z][a-z]+)-([a-z]+)-([a-z]+)-([0-9]+).html$ index.php/$1/$2/$3/$4
#RewriteRule ^([A-Z][a-z]+)-([a-z]+)-([a-z]+)-([\x00-\xff]+)-([a-z]+)-([0-9]+)-([a-z]+)-([0-9]+).html$ index.php/$1/$2/$3/$4/$5/$6/$7/$8 rewrite ^(.*)/index.html$ $1/index.php/Index/index;
rewrite ^(.*)/([A-Z][a-z]+).html$ $1/index.php/$2/index;
rewrite ^(.*)/([A-Z][a-z]+)-([a-z]+).html$ $1/index.php/$2/$3;
rewrite ^(.*)/([A-Z][a-z]+)-([a-z]+)-([a-z]+)-([0-9]+).html$ $1/index.php/$2/$3/$4/$5;
rewrite ^(.*)/([A-Z][a-z]+)-([a-z]+)-([a-z]+)-([\x00-\xff]+)-([a-z]+)-([0-9]+)-([a-z]+)-([0
-9]+).html$ $1/index.php/$2/$3/$4/$5/$6/$7/$8/$9;

时间: 2024-08-01 17:33:18

thinkphp部署在nginx下 500错误或404错误解决办法的相关文章

Nginx 502错误触发条件与解决办法汇总

Nginx 502错误触发条件与解决办法汇总 一些运行在Nginx上的网站有时候会出现"502 Bad Gateway"错误,有些时候甚至频繁的出现.有些站长是在刚刚转移到Nginx之后就出现了这个问题,所以经常会怀疑这是不是Nginx的问题,但事实上这是个误区. 以下是从张宴和Ayou的博客搜集整理的一些Nginx 502错误的排查方法,供大家参考: Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的.这些错误一般都不是nginx本身的问题,一定要从后端找

nginx/0.8.6 配置404错误页面

nginx/0.8.6 配置404错误页面 nginx/0.8.6   为什么要自定义404页面 在访问时遇到上面这样的404错误页面,我想99%(未经调查,估计数据)的用户会把页面关掉,用户就这样悄悄的流失了.如果此时能有一个漂亮的页面能够引导用户去他想去的地方必然可以留住用户.因此,每一个网站都应该自定义自己的404页面. NGINX下如何自定义404页面 IIS和APACHE下自定义404页面的经验介绍文章已经非常多了,NGINX的目前还比较少,凑巧我的几台服务器都是NGINX的,为了解决

dubbo filter 使用-调用Dubbo服务报以下错误,原因和解决办法

问题描述 调用Dubbo服务报以下错误,原因和解决办法 用mvn 创建了一个子项目jar dubbo filter,在生产者中无法调用,报 No such extension xxx for filter/com.alibaba.dubbo.rpc.Filter

在ASP中常见的错误80004005信息和解决办法

作者:BatMan错误信息(错误信息我不用翻译成中文了吧,呵呵,大家谅解)Microsoft OLE DB Provider for ODBC Drivers error '80004005'[Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet databaseengine cannot open the file '(unknown)'. It is already opened exclusivelyby another

win7安装错误常见提示及解决办法

  1.错误提示:Please wait- 意思:请稍候- 解决办法:如果我们在安装win7的时候一直保留在这个页面,卡在这个地方的话,请检查硬件是否正常,如果正常请检查MD5是否一致.如果配置低,可能要多等一下,请耐心等待.在PE2.0以下在这一步会提示无法安装,原因是PE版本太低.请使用高于或等于2.0版的PE,论坛有提供 2.错误提示:Setup is copying temporary files- 意思:程序正在复制临时文件- 解决办法:同1 3.错误提示:Setup is start

struts2.0-Struts2 404错误 Struts2 404错误

问题描述 Struts2 404错误 Struts2 404错误 刚刚还是在写着代码 , jar包配置也没什么问题 忽然就进不去项目了 主页都进不去了 解决方案 目前在做一个网络应用程序,struts2 + spring + hibernate,服务器是tomcat.希望用户在IE地址栏乱敲的时候,所敲入的所有未定义的URL都能被程序捕捉到,然后转到一个自制的404错误处理页面. 首先查阅网上的资料,得知可以在web.xml中加入这么一段: ?? 404 ?? /error/404.jsp 这样

win8下XAMPP中Apache模块无效解决办法

  win8下XAMPP中Apache模块无效解决办法 win8下系统默认占用80端口,导致apache无法打开. 以管理员权限运行c:windowssystem32cmd.exe C:WINDOWSsystem32>net stop http HTTP Service 服务已成功停止. C:WINDOWSsystem32>netstat -ano | findstr 0.0.0.0:80 C:WINDOWSsystem32>sc config http start=disabled [

各位朋友好,请教ubuntu系统python3.4环境下安装matplotlib报错的解决办法

问题描述 各位朋友好,请教ubuntu系统python3.4环境下安装matplotlib报错的解决办法 具体的问题是这样的: 我的系统是Ubuntu14.04 的64位系统,python3.4版本下,想使用matplotlib来做图. 由于matplotlib依赖numpy和python的图像库PIL,因此我先安装numpy和PIL然后,再安装matplotlib, 这里附上我的安装matplotlib的shell命令 #安装科学计算库numpy sudo pip3 install numpy

iis 400错误 返回404错误

问题描述 iis 400错误 返回404错误 我用的是 2008 r2 系统 网站发布之后,如果地址比较特殊的话,就问返回400错误 如:http://***/askdfa.asdfasdf.a....sdf.asd.f.asf.as.fa.fhtm 我想让IIS返回404错误 要如何设置 解决方案 你那路径请求就是404错误,如果像弄成400错误你可以转一下到自己建的400错误界面 404/views/400.jsp 解决方案二: 状态码应该概不了,显示页面可以去iis配置.. 解决方案三: