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


Answers:


23

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

这是最简单的方法,但是如以下Pixeline所述,请检查文件权限。这三个凭证中的两个存储在数据库中,但是第三个凭证被写入文件(我不记得哪个凭证不在我的头上)。
约翰·布洛赫

12

检查您的文件所有权。当以apache身份运行的用户可以写入wordpress目录时,则集成升级过程无需ftp就可以正常工作。如果网络服务器上的文件没有正确的权限,则使用FTP凭据,然后wordpress会提示您输入FTP详细信息,并尝试使用这些凭据将FTP返回到要写入的同一服务器上。它需要的文件。


1
您实际上不应该将文件所有权修改为Web服务器的所有权,因为这存在潜在的安全风险。
奥托

...除非它设置不正确,就我而言:)
pixeline 2011年

5

似乎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/


现在,该链接已消失。这是一个存档:web.archive.org/web/20131213005955/http
山姆·威尔逊

任何人都可以解释以下详细信息:“ $ allow_relaxed_file_ownership可选。是否允许组/世界可写。”
山姆·威尔逊

@Sam Wilson我现在将一些博客条目迁移到了免费的WordPress帐户。旧域已死。
Ardee Aram 2015年

1

当通过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

1)我不能同意上面的答案,因为它太笼统了

1a)我只是不想递归地更改我所有文件的所有权(例如使用shot弹枪杀死蚊子)。特别是在此之前完美地工作。

1b)突然间具有“鬼nea”功能的Wordpress要求您提供ftp的凭据

2)因此,我开始使用Ardee Aram的领导进行更深入的研究。我去检查了file.php文件并检查了它的所有权。似乎file.php依赖于它自己的所有权(错误地设置为root)。

修复:chown www file.php

注意:将www替换为您的发行版或设置(您可以使用ps aux | egrep“ php | http”并在第一栏中查看其所有权。

我希望这可以帮助其他人避免对此感到沮丧。我什至不明白为什么wordpress首先不“抱怨”然后提出使用FTP替代方案。现在,就像突然出现的“功能”一样。


欢迎来到WPSE,这是企鹅耳语者。请随便参观。关于“以上答案”,答案可能会由于人们的投票而随时改变顺序。很高兴您可以编辑帖子以指定您要引用的答案,这样很清楚。感谢您添加您的想法!
蒂姆·马隆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.