nginx下wordpress “无法将上传的文件移动至” 错误
之前使用盛大云服务器,用的是ubuntu装的apache服务器,
但网站总是莫名其妙的失去响应,需要重启apache才可以正常服务,看日志也没什么 异常,也就懒得研究,直接换成nginx。
把wordpress从apache挪到nginx比较容易,源文件拷到nginx根目录下,不需要修改代码,修改下wordpress在nginx下的重写规则就可以了。
但当我写文章发图片时,却提示我"无法将上传的文件移动至" 上传目录的错误。
今天(2012.12.4增加)又发现这个错误也可以用同样方式解决,nginx上传图片出现http error 错误
[crit] 22919#0: *600783 open() "/usr/local/nginx/client_body_temp/0000000017" failed (13: Permission denied)
根据自己经验和网上的资料,总结了如下几种排错方式:
1.中文文件名
网上很多网站说是修改上传文件名为全英文就可以,试了下没成功。
因为我使用的是最新版中文wordpress,而且我之前使用apache时曾经上传过中文名的附件。
所以认定此方法行不通,如果你是新版wordpress此方法可以不用理会了。
2.文件夹权限
如果对文件夹没有可写权限是不能上传的,你可以简单的设成777权限,让所有人都可以写。
但是为了安全,只要保证文件夹属主是可写的就可以也就是755.
ls -l 查看上传目录发现属主已经可写是755权限,继续排查别的。
3.php进程和nginx进程运行用户不同
因为我的nginx使用quancha这个用户运行的,也就是nginx.conf 里user指定的参数。
但是php-fpm的进程用的是www-data用户运行的。具体看截图。
ps -ef |grep quancha
ps -ef|grep php-fpm
上传功能使用php程序完成,也就是php-fpm进程的用户去写wordpress的上传目录。
但是上传目录位于nginx的html目录下且属主是nginx的运行用户。
也就是说用www-data去写quancha用户的文件夹,当然写不了。
解决方法:
1.修改nginx.conf中的user指令为www-data用户。
2.重启nginx
kill -QUIT cat /usr/local/nginx/nging.pid
;
sudo /usr/local/nginx/nginx
3.修改文件夹目录属性
chown -R www-data:www-data /usr/local/nginx