无法更新到WordPress 4.7.2-错误:文件权限不一致



当我试图通过admin:自动更新WordPress到4.7.2时,我一直收到这个错误消息

更新WordPress正在从下载更新https://downloads.wordpress.org/release/wordpress-4.7.2-new-bundled.zip…

正在解包更新…

无法安装更新,因为我们将无法复制某些文件。这通常是由于文件权限不一致。:wp-admin/included/update-core.php

安装失败的

我尝试在服务器上运行本文中的以下命令,但仍然收到错误消息:

sudo find . -type f -exec chmod 664 {} +
sudo find . -type d -exec chmod 775 {} +
sudo chmod 660 wp-config.php

我做错了什么?自动更新不应该使用正确的文件/文件夹权限吗?

您是否尝试过通过FTP(Filezilla)等程序手动上传更新的WordPress文件?你还遇到同样的问题吗?

更新:

运行以下

将所有文件的权限重置为664:

find /path/to/site/ -type f -exec chmod 664 {} ;

将目录的权限重置为775:

find /path/to/site/ -type d -exec chmod 775 {} ;

将组重置为wordpress组(或任何对您有意义的组)

chgrp -R wordpress /path/to/site/

对我来说,下面的命令有效。在下面的示例中,将"www data"替换为运行web服务器服务的用户名。同时将"/path/to/site"替换为指向WP站点根的实际路径。

chown -R www-data:www-data /path/to/site

重要信息请确保稍后通过将所有权授予常规用户(而不是web服务用户)来恢复此操作,否则将根本不安全。此外,将web服务用户保留为wp-content/uploads文件夹的所有者,以便用户可以上传媒体。

chown -R user:group /path/to/site
chown -R www-data:www-data /path/to/site/wp-content/uploads

我在本地更新时遇到了类似的问题。我最终使用了wp-cli:http://wp-cli.org/

如果您有ssh访问权限,那么值得一试。我运行了一个sudo wp core update --allow-root(不推荐用于实时网站),并且更新后没有权限错误。

运行这些命令,现在运行得很好(包括仪表板和ftp)。

sudo usermod -aG www-data $USER

sudo chown -R www-data:www-data /var/www

sudo chmod -R 774 /var/www

如果Wordpress安装了Bitnami,请使用这些命令。(bitnami:守护进程)

TARGET是WordPress应用程序文件夹:

sudo chown -R bitnami:daemon TARGET
sudo find TARGET -type d -exec chmod 775 {} ;
sudo find TARGET -type f -exec chmod 664 {} ;
sudo chmod 640 TARGET/wp-config.php

参考:https://docs.bitnami.com/bch/apps/wordpress-pro/administration/understand-file-permissions/

对我来说,所有建议的解决方案都不起作用,因为我使用的是Plesk面板,对我起作用的是按照这里提到的步骤手动更新WordPress:

1-首先创建网站的完整备份。这是非常重要的,以防你犯了错误。

2-从WordPress.org下载最新的WordPress ZIP文件。

3-将文件解压缩到本地机器上的目录或网站上的单独目录中。

4-停用你的WordPress网站上的所有插件。

5-转到你的网站根目录,删除你的"wp-includes"one_answers"wp-admin"目录。您可以通过sFTP或SSH来完成此操作。

6-上传(或复制)新的wp-includs和wp-admin目录,从你解压到你的网站根目录的新版本WordPress,以取代你刚刚删除的目录。

7-不要删除你的wp内容目录或该目录中的任何文件。将新版本WordPress中的wp内容目录中的文件复制到现有的wp属性目录中。您将覆盖具有相同名称的任何现有文件。wp内容中的所有其他文件都将保留在原位。

8-将所有文件从新版本WordPress的根目录('/')复制到你的网站根目录(或你的WordPress安装的根目录)。您将覆盖任何现有文件,新文件也将被复制。您的wp-config.php文件不会受到影响,因为WordPress从未与wp-config.php文件一起分发。

9-检查与WordPress一起分发的wp-config-sample.php,看看是否添加了任何你可能想要使用或修改的新设置。

10-如果你在自动更新失败后手动升级,请从你的WordPress根目录中删除.management文件。这将从您的网站中删除"更新失败"消息。

11-访问你的WordPress主管理页面/wp-admin/,在那里你可能会被要求再次登录。您可能还需要升级数据库,如果需要,系统会提示您。如果您无法登录,请尝试清除您的cookie。

12-重新启用您之前禁用的插件。

13-清除浏览器缓存以确保您可以看到所有更改。如果你使用的是像"清漆"这样的前端缓存,你也应该清除它,以确保你的客户可以在你的网站上看到最新的更改。

14-你的升级现在已经完成,你应该运行最新版本的WordPress。

给未来读者的一个提示。即使你的文件/目录所有权和权限是正确的,这个问题仍然可能是由SELinux拒绝对你的WordPress目录中的文件进行写访问引起的。

调试:

getenforce

将告诉您SELinux是否正在运行。

如果是,请使用检查WordPress文件上的SELinux上下文

ls -Z /path/to/wordpress

如果你的文件有一个";类型";的上下文(列表的第三段)

httpd_sys_content_t

这意味着SELinux将它们视为只读配置文件,并且不允许您的web服务器对其进行写入。

您可以使用更新上下文

chcon -R -t httpd_sys_rw_content_t /path/to/wordpress

这将把它们设置为一个上下文,允许您的web服务器对它们进行写入。请注意,这会将允许或不允许任何操作的责任委派给文件系统权限。因此,例如,如上所述设置上下文将不允许nginx写入root拥有的文件。如果文件权限允许,它只允许向它们写入。

相关内容

最新更新