今天将wordpress从apache上迁移到了nginx,数据库配置无误后仍然打不开,检查http状态,结果返回500:
之前在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
博主,我是某篇文章会出现评论不能显示 查询状态吗是返回的500 不知道是不是插件冲突,启用了缓存插件,也启用了memcached
检查下伪静态配置吧,或者把插件禁用了测试