it-swarm.cn

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

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

29
artlung

如果编辑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);
23
artlung

检查您的文件所有权。当Apache运行的用户可以写入wordpress目录时,集成升级过程都可以在没有ftp的情况下运行。 FTP凭据用于如果Web服务器没有正确的文件权限,则wordpress会提示您输入FTP详细信息,并尝试使用这些FTP返回到它所在的同一服务器以便能够写入它需要的文件。

12
pixeline

似乎WordPress不仅检查目录是否可写,而且还检查Apache用户拥有目录(或者至少,如果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/

5
Ardee Aram

当通过EasyApache4微调Apache 2.4以提高Centos 7 PHP 7服务器中的网站加载速度时,我启用了mod_pagespeed。启用它后,它将自动禁用mod_ruid2和mod_cgi(并启用其他两个模块)。禁用mod_pagespeed时,它不会自动重新启用mod_ruid2 - 它将仅重新启用mod_cgi。没有mod_ruid2,Wordpress将请求FTP凭据。

无需硬编码wp-config.php或将文件权限(危险地)设置为777.只需手动启用mod_ruid2,重启Apache并解决FTP /文件权限问题。 Wordpress和插件现在可以照常更新,并将媒体上传到Wordpress库。它可以立即使用。

我刚刚检查过,当从MPM Prefork更改为Worker时,它将禁用mod_ruid2。当从Worker恢复到Prefork时,它将不会启用mod_ruid2,从而导致此帖中描述的问题。

在这两种情况下,关键是检查并启用mod_ruid2。

希望有所帮助。

1
itmonitor