WordPress更新失败并出现“权限被拒绝”错误?

时间:2020-04-01 作者:Rick9004

我有一个Wordpress安装,它拒绝使用仪表板中的标准更新按钮进行自动更新。收到的错误为:

“正在解压缩更新…无法安装更新,因为我们将无法复制某些文件。这通常是由于文件权限不一致造成的。:wp admin/includes/update core.php…..安装失败”

警告:复制(/var/www/html/wp-admin/includes/update-core.php):无法打开流:在/var/www/html/wp-admin/includes/class-wp-filesystem-direct中权限被拒绝。php在线281

网站信息:

在Google cloud的计算引擎上,适当的公钥和防火墙条目允许从本地桌面访问DB、ssh2等。站点在Centos 7系统上运行Apache、PHP 7.3、MariaDB,除更新外的所有功能都运行良好。这包括所有普通页面、帖子等,插件更新所有文件权限设置为664,文件夹设置为775,这是Wordpress建议的,在wp配置文件中有“define(\'FS\\u METHOD\',\'direct\')

  • FTP用户是“ftpusername”
  • ftpusername属于组ftpusername,apache也是如此
  • 所有文件和文件夹都归apache所有
  • 所有文件和文件夹都属于组“apache”
      对站点的访问由SFTP Filezilla通过用户“ftpusername”和私钥进行。SSH使用相同的用户和私钥使用MobaXterm

      我需要确定Wordpress更新过程认为它是什么用户,因为它不是运行所有其他页面和帖子的用户,因为我拥有apache所有的文件和文件夹所有者。

    1 个回复
    SO网友:Tom J Nowell

    我需要确定Wordpress更新过程认为它是什么用户,因为它不是运行所有其他页面和帖子的用户,因为我拥有apache所有的文件和文件夹所有者。

    WordPress更新过程不知道它作为哪个用户运行,也不关心。它甚至不检查用户,为什么要检查。文件的所有者和PHP进程正在运行的用户可能会有很大的不同。如果它是错误的用户,那么WP将不知道也无法对此采取任何措施。

    PHP-FPM运行的所有代码都将在同一个用户下运行,无论是WordPress还是quickinfo.php 您输入了web根目录。

    你的问题是:

    警告:复制(/var/www/html/wp-admin/includes/update-core.php):无法打开流:在/var/www/html/wp-admin/includes/class-wp-filesystem-direct中权限被拒绝。php在线281

    从PHP文件运行的代码没有修改该文件的权限。PHP警告来自PHP本身,而不是WordPress的输出。

    您需要:

    确认文件可从PHP进程用户写入/删除确认文件夹可从PHP进程用户写入/删除。文件权限良好并不意味着文件夹也很好,也不意味着该文件夹的所有权对所属用户和所属组都是正确的。仅仅因为文件权限和文件夹权限很好,并不意味着它们适用于PHP进程用户这并不像用chmod设置正确的权限号那么简单。所有权至关重要。

    例如,664:

    enter image description here

    如果主人root. apache 都不是root 用户或中的root 组(我假设您的特定系统就是这样)。

    因此apache 将落入other bucket和其他组仅具有读取权限。

    但是,如果它是由与共享同一组的另一个用户拥有的apache, 或者它的所有者apache 那么,它自己664 可能适用于所有者或组权限。

    775怎么样?

    enter image description here

    这是相同的,但您已使文件可执行。

    因此,对于您的问题,这里没有WordPress特定的解决方案,即文件夹不能通过PHP脚本写入。

    另一方面,您应该将所有WP核心文件只读给PHP用户,以便恶意软件无法修改它们,然后使用外部工具更新WP,如cron作业上的WP CLI,或使用git.

    因此,您的问题和解决方案涉及文件/文件夹所有权和权限。可能您的apache用户不在适当的组中。也许它不拥有这些文件?只有你知道。

    相关推荐