WordPress 是国际知名的内容管理系统(CMS,Content Management System),也是许多全球部落客们的最爱。比起 Google Blogger 或是国内出名的 Xuite 部落格网站,WordPress 优点除了支持众多外挂外,另一个就是可以随心所欲的转换服务器,方便未来运算尺度上的扩充。

前些日子帮人将 WordPress 网站搬到 Bluehost 服务器,在转移后的测试中意外发现编辑文章时没办法新增图片。就算直接到控制台(Dashboard)新增媒体文件也被拒绝,并出现如下图一所示的错误提示「上传的文件无法被移动至 images/…」。

Wordpress-Can-not-Upload-Image-Media-Files图一,WordPress 新增媒体时的错误提示。

为了解决这个问题,首先进入 WordPress 位在 Linux 作业系统下的资料夹中查看相关权限是否设定正确。

请参考下图二,专门用来存放多媒体文件的 uploads 资料夹的文件权限是「rwxr-xr-x」,第一组「rwx」代表拥有者(owner)可以读取、写入与执行,第二组「r-x」代表群组(group)可以读取与执行,第三组「r-x」代表其他人(other)可以读取与执行。

Linux-User-Group-Uploads图二,多媒体资料夹的文件属性。

一般来说,只要试著输入下列指令将 uploads 资料夹属性设定成三组权限都是全开放(rwx)后,应该就能在 WordPress 中新增多媒体文件。

chmod 777 uploads

换言之,这是系统权限的错误设定所造成,虽然我知道有些人是采用这种治标不治本的方法,但是过度开放权限可是会替网站带来安全性隐忧。

为此,我们需要进一步查看到底是哪里设定错误。

后来我发现上图二的 uploads 文件属性中存在两个问题,分别是文件所属群组被设为「root」,而文件拥有者同样也被为「root」,代表这个资料夹是 root 所拥有。

一般新建好的 WordPress 资料夹不会发生这种状况,但是由于那位仁兄想在同一个服务器下架设多组网站,因此我设定了不同用户帐号去各自建立网站,再加上一些资料处理上的问题,便产生今天造成错误的状况。

Linux 操作提示:在指令前方加「sudo」指令,可用 root 权限进行设定。

因此,我们接下来就是要将资料夹的所属群组与拥有者都指定给正确的用户(只要参考上下资料夹就能知道正确的群组名称与拥有者)。

在 Linux 底下,通用的群组设定指令是 chgrp(Change Group),拥有者设定指令是 chown(Change Owner)。接著输入以下两道指令便能将 uploads 设定成正确的所有者权限:

chgrp GROUP_NAME uploads/

chown USER_NAME uploads/

不过你要是以为这样输入就没问题的话,就会犯了跟我先前一样的错误。

请参考下图三,在 WordPress 上传媒体时又出现了先前图一的错误,我才想到资料夹下还有资料夹。

Linux-User-Group-Uploads-Years-Months图三,多媒体资料夹下子资料夹属性。

大家可以在图三中发现,/images/ 下的每一组资料夹的所属群组与拥有者也都还是 root。所以最好的解决方案是一次就把整份资料夹,以及旗下所属资料夹与文件通通设定成正确的所属群组与拥有者。因此我们可以在 /wp-content/ 底下输入下面指令和参数一次解决所有问题。

chown -R User_Name:Group_Name uploads

其中「User_Name」与「Group_Name」之间的「:」冒号,是用来联合输入所属群组与拥有者,如此一来就不用输入一堆指令啰。

✦ 独立报道 · 读者支持 ✦

以实际行动支持独立观点,与我们一同走得更远

每一篇条理清晰的分析、每一次不随波逐流的观察,背后都是对真实与品质的坚持。我们拒绝内容农场与算法流量绑架,坚持自由独立的客观发声。

维持高品质的原创写作与独立运营,需要持续的实质力量。您可以选择一次性赞助或每月定期支持,通过 Google 安全结账,与我们一同守护这份深刻与清醒。

由 Google 安全处理付款 · 可随时在 Google 账户管理或取消