Ftp_nlist()和ftp_pwd()警告

时间:2020-05-03 作者:NBajanca

我不确定这个警告是什么时候开始的。我获得了一个现有的站点来进行托管,并应用了以下良好实践:

更新了Wordpress-从5.3到5.4.0(当前WP版本)

  • 更新了所有插件-这是一个大列表,所以我不会将其添加到这里wp-content 可由Apache写入(内部有一些限制)->WordPress Hardening Guide
  • 请注意,Apache和PHP-FPM都使用Apache用户和组。我们只在这个网站上使用服务器(VM),所以我不必解决与进程共享相关的安全问题。

    通过这些更改,我开始出现以下PHP警告(是的,我同时做了所有事情!很抱歉):

    Warning: ftp_nlist() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 402
    
    Warning: ftp_pwd() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 226
    
    Warning: ftp_pwd() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 226
    
    Warning: ftp_pwd() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 681
    
    Warning: ftp_nlist() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 402
    
    Warning: ftp_pwd() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 226
    
    Warning: ftp_pwd() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 226
    
    Warning: ftp_pwd() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 681
    
    Warning: ftp_nlist() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 402
    
    Warning: ftp_pwd() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 226
    
    Warning: ftp_pwd() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 226
    
    Warning: ftp_rmdir() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 381
    
    Warning: ftp_nlist() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 402
    
    Warning: ftp_pwd() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 226
    
    Warning: ftp_pwd() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 226
    
    Warning: ftp_pwd() expects parameter 1 to be resource, null given in /var/www/html/wp-admin/includes/class-wp-filesystem-ftpext.php on line 681
    
    每次调用服务器时,这些警告都会出现在PHP-FPM日志文件中。如果我设置define( \'WP_DEBUG\', true ); 它们可以在每一页中找到。

    解决步骤我可以停止这些警告,执行以下操作之一:

    禁用插件Swift FrameworkRedux Framework.

    WordPress bug

    我还发现WordPress issue 48689 这描述了相同的错误,但与不同的插件相关。然而,解决方案(if (!defined(\'FS_METHOD\')) define(\'FS_METHOD\', \'direct\');) 对我来说不行。剩下的选项是隐藏警告,这似乎不是一个好主意。

    1 个回复
    SO网友:NBajanca

    毕竟it was already in the question!

    这两个插件都与我的WordPress站点主题相关(uplift). 我不知道它在做什么或在哪里,但当它检测到文件的所有者不是它的执行用户(apache)时,它会将访问方法更改为FTP。

    对我来说,这种行为似乎不合逻辑,因为即使我这样做了775 user:apache (伪代码),它不起作用(它正在搜索所有者,如果它有权限的话就不会)。我可以575 apache:user 但在这种情况下,apache可以运行CHMOD,因此它是没有意义的。

    而且,这种情况发生在wp-content. 插件或主题没有记录,对我来说,这似乎是一个安全问题。中“所有者”和“权限”的0个结果documentation.

    解决方案

    只需添加define(\'FS_METHOD\', \'direct\');.

    小心一点!这需要在之前添加require_once( ABSPATH . \'wp-settings.php\' );. 为什么?还是不知道。但是,这是几个配置的一个要求,您可以通过Editing wp-config.php docs page

    注意事项answer, 使用FS_METHOD 共享主机可能会带来安全风险。不是我的案子,所以我的调查到此结束。

    缺失

    请随时回答以下疑问(在评论或回答中,我将接受答案或相应地补充我的):

    提升主题在做什么?为什么他们需要检查所有者FS_METHOD 设置需要在wp-settings.php 页码

    相关推荐

    permissions access error

    编辑后保存帖子时,我会得到以下信息:Forbidden You don\'t have permission to access /wp-admin/post.php on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. 所有文件权限为644,目录权限为755,