【问题标题】:Unable to update to WordPress 4.7.2 - Error: inconsistent file permissions无法更新到 WordPress 4.7.2 - 错误:文件权限不一致
【发布时间】:2017-02-01 23:10:20
【问题描述】:

当我尝试通过管理员自动将 WordPress 更新到 4.7.2 时,我不断收到此错误消息:

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

正在解压更新……

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

安装失败

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

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

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

【问题讨论】:

    标签: wordpress permissions


    【解决方案1】:

    您是否尝试过通过 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/
    

    【讨论】:

    • 不,我还没有。我真的希望能够修复自动更新,以便将来使用。
    • 您是否尝试过通过 SSH 将 WordPress 网络文件更改为 644 并将所有目录更改为 755?我通过 Filezilla 使用 SSH 访问途径。
    • 谢谢克雷格。我跑了上面的表扬:sudo find . -type f -exec chmod 664 {} +sudo find . -type d -exec chmod 775 {} +
    • 不用担心,丽兹。虽然我能够导航自己的服务器,但我对您的方法相当陌生。如果您按照我之前评论中的建议遵循我的方法,那么您应该没有问题。我确实为您快速浏览了互联网并找到了这篇文章:aaronjholbrook.com/wordpress-permissions-update-error-resolved 看看这是否对您有帮助。只要确保对您的网站进行完整备份,以防万一! :-)
    • 太棒了!很高兴我的意见对你有用!祝你的网站好运。
    【解决方案2】:

    对我来说,下面的命令有效。在下面的示例中,将“www-data”替换为运行 Web 服务器服务的用户名。还将“/path/to/site”替换为 WP 站点根目录的实际路径。

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

    重要提示请务必在之后通过将所有权授予普通用户(而不是 Web 服务用户)来恢复此设置,否则将根本不安全。此外,将网络服务用户保留为 wp-content/uploads 文件夹的所有者,以便用户上传媒体。

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

    【讨论】:

    • 如果你使用的是 nginx,那么使用:$ chown -R nginx:nginx /path/to/site
    【解决方案3】:

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

    sudo usermod -aG www-data $USER

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

    sudo chmod -R 774 /var/www

    【讨论】:

      【解决方案4】:

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

      如果您有 ssh 访问权限,则值得一试。我运行了一个sudo wp core update --allow-root(不推荐用于实时站点),并且在没有权限错误的情况下对其进行了更新。

      【讨论】:

        【解决方案5】:

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

        1- 首先创建您网站的完整备份。如果您犯了错误,这一点非常重要。

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

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

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

        5- 转到您的网站根目录并删除您的“wp-includes”和“wp-admin”目录。您可以通过 sFTP 或 SSH 进行此操作。

        6- 从您解压的新版 WordPress 中上传(或复制)新的 wp-includes 和 wp-admin 目录到您的网站根目录,以替换您刚刚删除的目录。

        7- 不要删除您的 wp-content 目录或该目录中的任何文件。将新版 WordPress 中 wp-content 目录中的文件复制到现有的 wp-content 目录中。您将覆盖任何现有的同名文件。 wp-content 中的所有其他文件都将保留在原处。

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

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

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

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

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

        13- 清除浏览器缓存以确保您可以看到所有更改。如果您使用的是“varnish”之类的前端缓存,您还应该明确这一点,以确保您的客户可以看到您网站上的最新更改。

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

        【讨论】:

          【解决方案6】:

          如果您的 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/

          【讨论】:

            【解决方案7】:

            给任何未来读者的注释。即使您的文件/目录所有权和权限是正确的,这个问题仍然可能是由 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 拥有的文件。如果文件权限允许,它只允许写入它们。

            【讨论】:

              猜你喜欢
              • 2021-01-06
              • 2014-09-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-10-04
              • 1970-01-01
              • 2018-03-31
              相关资源
              最近更新 更多