您不必定义 UPLOADS - WordPress 知道在哪里可以找到其上传目录,并且更改默认值可能会在以后导致问题,因此首先从 wp-config 文件中删除“定义...”行。
在服务器上,我假设您使用的是某种 linux 机器(您没有指定),但首先要做的是找出服务器在哪个用户下运行 Apache Web 进程。
ps aux | egrep '(apache|httpd)'
这将列出所有正在运行的 apache 进程,并且在第一列中您应该会看到用户 - 在我的上,它是 www-data。您可能会看到一些以 root 为用户的用户,请忽略这些。
www-data 22052 1.0 3.3 482980 135680 ? S 11:50 0:03 /usr/sbin/apache2 -k start
现在了解用户允许我们确保用户有权写入整个 WordPress 目录 - 这包括更改 .htaccess 文件以更新符号链接,以及安装插件、更新和上传文件和媒体。
导航到包含 wp-config.php 文件的主 wp 目录并运行 ls -l
您应该会看到所有文件的列表,其中包含与之关联的用户和组及其权限。不要在这里更改权限。您应该会发现大多数或所有文件都具有与文件所有者相同的 apache 用户(同样,我的是 www-data) - 第一列。
-rw-r--r-- 1 www-data customuser 3168 Apr 3 13:58 wp-config.php
现在我们要确保安装中的每个文件和目录都归该用户所有,以便它可以根据分配的特定读/写权限进行更改。 在执行此操作之前,请确保您位于 WordPress 目录中!
将此处的“www-data”替换为您在上一步中确定运行 apache 的任何用户。 'www-data' 在我的服务器上是正确的,但在你的服务器上可能不同。
chown -R www-data *
这会将目录中的文件以及嵌套在目录中的任何文件和目录的所有权 [chown] 递归地 [-R] 更改为 [www-data] 我们确定 Web 服务正在运行的用户在 [*] 下的所有内容。
测试看看是否能解决问题。
如果没有,请导航到上传目录的实际标准位置。
[your-wp-root-folder]/wp-content
再次运行ls -l
drwxr-xr-x 14 www-data www-data 4096 Apr 3 13:47 uploads
权限在开头 - [drwxr-xr-x]
[d] - 目录
[rwx] 拥有者已读/写/执行 - 7
[r-x] 组已读取/--/execute - 5
[r-x] 每个人都读过/--/execute - 5
所以这将是 755 个权限
您可以在此处使用 chmod 更改权限:
chmod -R 755 ./uploads
[./uploads] [.] 表示“从当前目录开始”,[/uploads] 表示“影响上传目录”。 [-R] 像以前一样递归地进行更改,因此它将影响上传目录中包含的任何文件和目录。
这应该可以解决上传目录的所有权限问题。