问题描述

在进行更新时如何阻止 WordPress 提示我输入 FTP 信息?

最佳解决方案

如果您编辑 wp-config.php 文件,可以将这些 FTP 设置预加载为 WordPress 读取的常量。请记住,在共享的主机上,您应该注意可能的安全隐患。有关详细信息,请参阅编辑 wp-config.php

您的设置将有所不同,但这些对我和我的托管设置都有效。我已经包括一些未使用的常量,前缀:

define('FS_METHOD', 'direct');
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/');
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/');
// define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub');
// define('FTP_PRIKEY', '/home/username/.ssh/id_rsa');
define('FTP_USER', 'my-ftp-username');
define('FTP_PASS', 'my-ftp-password');
define('FTP_HOST', 'ftp.my-site.example.com');
// define('FTP_SSL', false);

次佳解决方案

检查您的文件所有权。当 apache 运行的用户可以写入 wordpress 目录时,集成的升级过程全部都没有 ftp 。 FTP 凭证适用于 Web 服务器对您的文件没有正确的权限,然后 WordPress 提示您输入您的 FTP 详细信息,并尝试将其用于 FTP 到与之相同的服务器,以便能够写入需要的文件

第三种解决方案

看来,WordPress 不仅可以检查目录是否可写,而且会检查 Apache 用户是否 OWNS 目录 (或至少,如果 Apache 用户拥有创建的临时文件) 。请观察这些代码行在/wp-admin/includes/file.php: get_filesystem_method():

    if ( $temp_handle ) {
        if ( getmyuid() == @fileowner($temp_file_name) )
            $method = 'direct';
        @fclose($temp_handle);
        @unlink($temp_file_name);
    }

所以,一个快速的解决方案将是发出这个命令,并将整个 Wordpress 安装的所有权归给 Apache:

sudo chown -R www-data wordpress/

其中 www-data 是 Apache 用户,当然 wordpress 是您的 WordPress 安装文件夹。

我进一步记录了我的解决方案:https://ardeearam.wordpress.com/2013/02/03/solved-wordpress-asking-for-ftp-credentials-when-upgrading/

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。