【发布时间】:2025-12-17 15:45:02
【问题描述】:
我在本地系统中安装了一个 WordPress 博客。但是当我尝试从管理员添加插件时,它会要求 FTP 访问。我需要为 WordPress 配置什么才能在没有 FTP 的情况下上传?
【问题讨论】:
标签: wordpress plugins ftp wordpress-theming admin
我在本地系统中安装了一个 WordPress 博客。但是当我尝试从管理员添加插件时,它会要求 FTP 访问。我需要为 WordPress 配置什么才能在没有 FTP 的情况下上传?
【问题讨论】:
标签: wordpress plugins ftp wordpress-theming admin
尝试在wp-config.php中添加代码:
define('FS_METHOD', 'direct');
【讨论】:
FS_METHOD 是 FILESYSTEM_METHOD 的缩写。当您定义direct-ly 修改文件时 - 也就是不使用 FTP,那么您就是在强制 WordPress 尝试直接更改站点上的文件。
如果您使用的是 Ubuntu。
sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
【讨论】:
www-data 所有,请参见此处:codex.wordpress.org/Hardening_WordPress 或此处:*.com/questions/18352682/…
“当您使用 WordPress 控制面板自动安装、升级或删除插件时,WordPress 必须对文件系统上的文件进行更改。
在进行任何更改之前,WordPress 首先检查它是否有权直接操作文件系统。
如果 WordPress 没有直接修改文件系统的必要权限,系统会要求您提供 FTP 凭据,以便 WordPress 可以尝试通过 FTP 执行所需的操作。"
解决方案: 为了找出您的 apache 实例以哪个用户身份运行,请创建一个包含以下内容的测试脚本:
<?php echo(exec("whoami")); ?>
对我来说,它是守护进程而不是 www-data。然后,通过以下方式修复权限:
sudo chown -R daemon /path/to/your/local/www/folder
【讨论】:
<?php echo(exec("id")); ?>,它甚至可以为您提供超出用户ID 的组数据:uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
whoami 所以看到同样的信息:sudo chown -R `whoami` /path/to/your/local/www/folder
我递归地将wordpress文件夹的所有权更改为www-data并重新启动了apache。
sudo chown -R www-data:www-data <folderpath>
它就像一个魅力!
【讨论】:
在 OSX 上,我使用了以下内容,并且效果很好:
sudo chown -R _www:_www {path to wordpress folder}
_www 是在 Mac 上运行 PHP 的用户。
(您可能还需要 chmod 一些文件夹。我已经先完成了它,但它没有修复它。直到我执行 chown 命令才有效,所以我不确定它是否有效单独的 chown 命令,或 chmod 和 chown 的组合。)
【讨论】:
如果在安装插件期间,Wordpress 会询问您的主机名或 FTP 详细信息。 然后按照以下步骤操作:
登录到您的服务器并导航到 /var/www/html/wordpress/。 打开 wp-config.php 并在 define('DB_COLLATE') 之后添加这一行
define('FS_METHOD', 'direct');
如果您收到“无法创建目录”错误。以递归方式为您的 wordpress 目录授予写权限
chmod -R go+w wordpress
注意。为安全起见,请在安装插件后撤销这些权限
chmod -R go-w wordpress
【讨论】:
WordPress 在无法访问文件时会询问您的 FTP 凭据 直接地。这通常是由于 PHP 以 apache 用户身份运行引起的 (mod_php 或 CGI)而不是拥有 WordPress 文件的用户。
这在大多数共享主机环境中是相当正常的 - 文件以用户身份存储,而 Apache 以用户 apache 或 httpd 身份运行。这实际上是一个很好的安全预防措施,因此漏洞和黑客无法修改托管文件。您可以通过将所有 WP 文件设置为 777 安全性来规避此问题,但这意味着 没有 安全性,因此我强烈建议您不要这样做。只需使用 FTP,这是有充分理由的自动建议解决方法。
【讨论】:
我按照here 概述的步骤在 Ubuntu 14.04 上进行了 WordPress 本地安装并简单地运行:
sudo chown -R www-data:www-data {path_to_your_project_directory}
解决了我下载插件的问题。我在这里留下这篇文章的唯一原因是,当我在谷歌上搜索我的问题时,这是第一个结果,它引导我找到了我的问题的解决方案。
希望这对任何人都有帮助!
【讨论】:
对这个问题有很多类似的回答,但没有一个完全触及根本原因。 Sebastian Schmid's 对原帖的评论触及了它,但并不完全。以下是我在 2018 年 11 月 6 日的看法:
根本原因
当您尝试通过 WordPress 管理界面上传插件时,WordPress 将调用一个名为“get_filesystem_method()”的函数(参考:/wp-admin/includes/file.php:1549)。此例程将尝试将文件写入相关位置(在本例中为插件目录)。如果没有正确设置文件权限以允许 WordPress 用户(认为执行 php 的用户身份)将文件写入相关位置,它当然会立即失败。
如果可以创建文件,则此函数会检测临时文件的文件所有者,以及函数当前文件的文件所有者(参考:/wp-admin/includes/file.php:1572)并比较两者。如果它们匹配,那么用 WordPress 的话来说,“WordPress 正在以与 WordPress 文件相同的所有者创建文件,这意味着通过 PHP 修改和创建新文件是安全的”,并且您的插件在没有 FTP 凭据提示的情况下成功上传。如果它们不匹配,您会收到 FTP 凭据提示。
修复
确保运行您的 php 进程的身份是以下任一者的文件所有者:
a) 所有 WordPress 应用程序文件,或...
b) 至少 /wp-admin/includes/file.php 文件
最终评论
我并不太热衷于将文件所有权专门应用于 file.php 以解决此问题(至少可以说感觉有点 hacky!)。在我看来,WordPress 代码库倾向于让我们在与 WordPress 应用程序文件的文件所有者相同的用户主体下执行 PHP 进程。我会欢迎社区中的一些 cmets。
【讨论】:
chown www-data wp-admin/includes/file.php 解决了它。 (其中的其他文件归 ftp 用户所有)。但事实上,正如你所注意到的,这感觉就像一个奇怪的黑客。必须有更简洁的方法来解决这个问题,无论是在 WP 中,还是在某些插件中。
首先移动到你的安装文件夹(例如)
cd /Applications/XAMPP/xamppfiles/
现在我们要修改您的 htdocs 目录:
sudo chown -R daemon htdocs
在出现提示时输入您的 root 密码,然后使用 chmod 调用完成:
sudo chmod -R g+w htdocs
【讨论】:
解决此问题的最简单方法是将以下 FTP 信息添加到您的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/');
FTP_BASE 是 WordPress 安装的“base”(ABSPATH) 文件夹的完整路径 FTP_CONTENT_DIR 是 WordPress 安装的 wp-content 文件夹的完整路径。 FTP_PLUGIN_DIR 是 WordPress 安装的插件文件夹的完整路径。
【讨论】:
我们遇到了与更大问题的一部分相同的问题。
的建议解决方案define('FS_METHOD', 'direct');
隐藏了那个窗口,但是我们仍然在加载主题和升级等方面遇到问题。它与权限有关,但是在我们的例子中,我们通过从 php OS vendor mod_php 移动到更安全的方式解决了这个问题php OS 供应商 FastCGI 应用程序。
【讨论】:
我也遇到了同样的问题! 我已经在 wp-config.php 文件(在任何行)中添加了下面的代码,它现在可以工作了!
define('FS_METHOD', 'direct');
【讨论】:
正如 Niels 所说,发生这种情况是因为服务器进程用户无法写入 Wordpress 文件夹。
但这是很多文章都没有解释的事情。它是 php 进程的所有者,而不是 nginx 进程。如果你尝试更改 nginx 所有者,它不会解决这个问题。
要解决它,请尝试运行ps aux 以查看哪个用户拥有 php-fpm 进程。然后检查用户是否与 wordpress 文件夹的所有者相同,或者至少可以写入。如果用户无法写入,您需要更改文件夹的权限和/或所有权;或者将两个用户(服务器所有者和 wordpress 文件夹所有者)放在一个可以写入文件夹的公共组中;或将 php.ini "user" 属性更改为可以写入文件夹的用户。
【讨论】:
define('FS_METHOD', 'direct');
将此添加到 wp-config.php
如果问题仍然存在,您可以尝试将插件文件夹的权限设置为 755 或者在linux中你可以通过这个命令设置它 chmod -R 755
【讨论】: