近期和朋友一起入了新的服务器,均使用了CentOS以及LAMP,而他遇到了这样的情况:插件无法安装,提示无法创建目录,而后发现更新也不行。这是怎么回事呢?
简单看了下,实际是因为WordPress没有更新的权限。
具体来说,是因为CentOS有以下特点:1.文件和目录均有所有者和权限两个属性,在操作用户非所有者时,权限被开放才能进行写入操作。
2.文件和目录的所有者一般为创建者。如使用Wget命令下载的文件,所有者一般是网关程序(比如Apache,Nginx);使用FTP上传的文件,所有者是FTP用户;在SSH链接时直接创建的文件,所有者是登陆用户(可能是root)。
而LAMP来说,在运行WordPress时,安装等操作调用的均是Apache这个用户的权限。而Apache用户是无权修改FTP用户或root的文件的。
因此有两个解决方案可供选择:
1.将WordPress目录的用户改为Apache
首先,查看Apache的用户名到底是什么,在终端运行命令:# vim /etc/passwd
看看有没有叫做apache的用户,如果没有请上网搜索一下你的配置下网关用户名叫什么(如果是LNMP,则看看有没有叫做www的用户,这是Nginx的默认用户名)。
如有,按下ESC,输入:q关闭文件。然后修改目录用户为apache(以目录/var/www/html/为例,实际请修改为你自己的WordPress根目录)。# chown –R apache /var/www/html/
然后继续,将该目录权限改为755:# chmod –R 755 /var/www/html
测试一下,安装插件和模板的功能应该已经恢复。如果更新仍然失败,可以尝试单独给更新程序777权限:# chmod –R 777 /var/www/html/wp-admin/update-core.php
2.将WordPress整个目录设置为777权限
非常不建议这么做,将大大降低网站安全性,777权限意味着组用户和公共用户均可以写入(修改、删除)。
但网站未上线的调试阶段是可以接受的。下面是修改方法:# chmod –R 777 /var/www/html/
如果只是安装插件和模板有问题,可以仅仅修改wp-content的权限为777,这样会比上面好一些:# chmod –R 777 /var/www/html/wp-content