WordPress迁移到Nginx上遇500错误

今天将wordpress从apache上迁移到了nginx,数据库配置无误后仍然打不开,检查http状态,结果返回500:

http 500 error

http 500 error

之前在apache下.htaccess配置错误的时候会遇到类似的错误,于是首先想到nginx的伪静态配置有问题,nginx下wordpress用的伪静态规则如下:

location / {
if (-f $request_filename/index.html){
                rewrite (.*) $1/index.html break;
        }
if (-f $request_filename/index.php){
                rewrite (.*) $1/index.php;
        }
if (!-f $request_filename){
                rewrite (.*) /index.php;
        }

禁用伪静态之后仍然打不开,全新安装一个wordpress,使用上面的伪静态规则,可以正常访问,证明伪静态规则无误。

然后突然发现php文件不可执行,怀疑是这个原因造成的,于是将所有php文件加上了可执行属性,仍然不行,看刚才那个全新安装的wordpress,php没有可执行属性一样运行的好好的,看来不是这个原因。虽然这个方法没有解决问题,但也是有收获的,用 chmod 755 -R *.php 并不能按照预想的那样把当前目录及子目录全部php文件加上可执行属性,正确的方法应该是:

find path -type f -exec chmod 755 {} \;

解释一下 {}是将find的结果一个个的传递给chmod作为参数,分号";"是-exec的必须参数,告诉exec命令结束了,但 ";" 也是shell命令结束的关键字,所以要转义或者引用,即也可以写作:

find path -type f -exec chmod 755 {} ";"

最后还是得靠度娘,找到一篇文章(链接:http://www.douban.com/note/242967533/),提到缓存插件会有影响,才想起自己安装了object-cache缓存插件,将object-cache.php移走,果然可以正常访问了,可是,没有说在nginx下面就不能用object-cache呀,是不是得重启memcached呀?于是 /etc/init.d/mem....tab ...tab....怎么就不能自动补全呢?!

暴走

暴走

原来是还没装memcached !!!!

害我折腾这么久--_--。

装完memcached,终于可以访问了。继续迁移其他站...EOF

2 thoughts on “WordPress迁移到Nginx上遇500错误

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注