我已经按照这里的教程在本地 apache2 服务器上安装了 LAMP 堆栈和 Wordpress-
但当我尝试上传媒体文件(图像/声音)时,出现错误-
The uploaded file could not be moved to wp-content/uploads/2015/01.
可能出了什么问题?我已将我的用户添加到 www-data 组,chown目录/var/www/ 也一样。
答案1
您可以使用此脚本来修复 wordpress 权限:
#!/bin/bash
#
# This script configures WordPress file permissions based on recommendations
# from http://codex.wordpress.org/Hardening_WordPress#File_permissions
#
# Author: Michael Conigliaro <mike [at] conigliaro [dot] org>
#
WP_OWNER=www-data # <-- wordpress owner
WP_GROUP=www-data # <-- wordpress group
WP_ROOT=$1 # <-- wordpress root directory
WS_GROUP=www-data # <-- webserver group
# reset to safe defaults
find ${WP_ROOT} -exec chown ${WP_OWNER}:${WP_GROUP} {} \;
find ${WP_ROOT} -type d -exec chmod 755 {} \;
find ${WP_ROOT} -type f -exec chmod 644 {} \;
# allow wordpress to manage wp-config.php (but prevent world access)
chgrp ${WS_GROUP} ${WP_ROOT}/wp-config.php
chmod 660 ${WP_ROOT}/wp-config.php
# allow wordpress to manage wp-content
find ${WP_ROOT}/wp-content -exec chgrp ${WS_GROUP} {} \;
find ${WP_ROOT}/wp-content -type d -exec chmod 775 {} \;
find ${WP_ROOT}/wp-content -type f -exec chmod 664 {} \;
将其保存到文件并运行它并将您的 wp 安装目录传递给它:
wget https://gist.github.com/Adirael/3383404/raw/6c5446d56477426faeb709e5b807f00422acdea2/fix-wordpress-permissions.sh
chmod +x fix-wordpress-permissions.sh
sudo ./fix-wordpress-permissions.sh /var/www/html
答案2
希望这能帮助您解决问题并解释发生了什么,以便将来也能帮助您。当您进入 wordpress“仪表板”并上传文件时 - 对文件系统执行更改的“用户”是www-data
(即通过 apache webserver 的 libapache2-mod-php5)。因此,为了进行更改wp-content/uploads/2015/01.
,www-data
需要任何一个具有目录的写权限或自己的目录。这意味着您可以通过运行以下命令授予文件夹自由权限:
chmod -R 777 wp-content/uploads
注意:你必须cd
先进入 wordpress 目录,如果你当前不拥有该文件夹,则需要使用sudo
然而根据我的经验,这会导致问题,即一旦您修复了权限问题,当 wordpress 尝试将文件写入其他目录时,您可能会遇到更多问题,例如当它更新、新插件等时。所以在这种情况下我会使用:
sudo chown -R www-data <wordpress-parent-directory>
并让其www-data
拥有整个文件夹。
注意:在本地安装时这不是什么大问题,但是当你移动到生产服务器时,需要小心权限,并且通常只给网络服务器绝对最低限度完成其工作所需的权限。
答案3
wp-content 目录真的在你认为的位置吗?
我注意到,所讨论的文章创建了一个目录,/var/www/html/
但 wordpress 会认为它将位于您从压缩 tar 文件中提取的 wordpress 目录下。在我的情况下,它是/var/www/html/wordpress/wp-content
指向另一个目录的软链接。一旦我修复了此位置的权限和所有权,它就对我有用了。