当我试图通过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拥有的文件。如果文件权限允许,它只允许向它们写入。