我在我的实时服务器上使用WordPress ,它只使用使用SSH密钥 的SFTP 。
我想安装和升级插件,但您似乎需要输入您的 FTP 登录名才能安装插件。有没有办法通过手动上传文件而不是让 WordPress 处理整个过程来安装和升级插件?
如果无法/wp-content
直接写入,WordPress 只会在尝试安装插件或 WordPress 更新时提示您输入 FTP 连接信息。否则,如果您的 Web 服务器对必要文件具有写入权限,它将自动处理更新和安装。此方法不需要您拥有 FTP/SFTP 或 SSH 访问权限,但它确实需要您在网络服务器上设置特定的文件权限。
它将按顺序尝试各种方法,如果 Direct 和 SSH 方法不可用,则回退到 FTP。
https://github.com/WordPress/WordPress/blob/4.2.2/wp-admin/includes/file.php#L912
WordPress 将尝试将临时文件写入您的/wp-content
目录。如果成功,它将文件的所有权与其自己的 uid 进行比较,如果匹配,它将允许您使用“直接”方法安装插件、主题或更新。
现在,如果由于某种原因您不想依赖自动检查要使用的文件系统方法,您可以'FS_METHOD'
在wp-config.php
文件中定义一个常量,或者'direct', 'ssh', 'ftpext' or 'ftpsockets'
它会使用该方法。请记住,如果您将此设置为“直接”,但您的网络用户(运行网络服务器的用户名)没有正确的写入权限,您将收到错误消息。
总之,如果您不想(或不能)更改 wp-content 的权限以使您的 Web 服务器具有写入权限,则将其添加到您的 wp-config.php 文件中:
define('FS_METHOD', 'direct');
此处解释的权限:
如前所述,任何烫发修复都不再起作用。您需要相应地更改烫发并将以下内容放入您的wp-config.php
:
define('FS_METHOD', 'direct');
只是想补充一点,您绝不wp-content
能将任何文件夹的权限或权限设置为777
.
这是我必须做的:
1)我将wordpress文件夹的所有权(递归)设置为apache用户,如下所示:
# chown -R apache wordpress/
2)我将wordpress文件夹的组所有权(递归)更改为apache组,如下所示:
# chgrp -R apache wordpress/
3) 赋予所有者对该目录的完全权限,如下所示:
# chmod u+wrx wordpress/*
这就是工作。我的wp-content
文件夹有755
权限,顺便说一句。
TL;DR 版本:
# chown -R apache:apache wordpress
# chmod u+wrx wordpress/*
wp-config.php
添加define('FS_METHOD', 'direct');
wp-content/
,wp-content/plugins/
.wp-content/plugins
目录中)。在版本 3.2.1 上工作
打开wp-config.php
文件并添加以下行:
define('FS_METHOD', 'direct');
这对我有用......谢谢
只需快速更改wp-config.php
define('FS_METHOD','direct');
就是这样,在没有 ftp的情况下享受您的 wordpress 更新!
替代方法:
有一些主机会阻止这种方法来简化您的 WordPress 更新。幸运的是,还有另一种方法可以防止这种害虫提示您输入 FTP 用户名和密码。
同样,在 wp-config.php 文件中的 MYSQL 登录声明之后,添加以下内容:
define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");
更改php_mod
为启用fastcgi
并启用(cgi
ISPConfig用户)。为我工作。SuEXEC
如果不起作用,请尝试更改wp-content
为775
asroot
或sudo
user:
chmod -R 775 ./wp-content
然后添加到wp-config.php
:
define('FS_METHOD', 'direct');
祝你好运
为了能够使用 SSH2 进行更新和主题上传,您必须生成 SSH 密钥并安装 PHP SSH 模块。然后 WordPress 将检测到您有可用的 SSH2,并且在进行上传/升级时您会看到显示的不同选项 (SSH2)。
1.) 确保为 debian 安装了 PHP 模块:
sudo apt-get install libssh2-php
2.) 生成 SSH 密钥,添加密码是可选的:
ssh-keygen
cd ~/.ssh
cp id_rsa.pub authorized_keys
3.) 更改权限,以便 WordPress 可以访问这些密钥:
cd ~
chmod 755 .ssh
chmod 644 .ssh/*
现在您将在进行上传/升级/插件时获得 SSH2 选项。
4.) 为方便起见,您可以设置默认值,wp-config.php
这将在 WordPress 上传窗口中预先填充 SSH 凭据。
define('FTP_PUBKEY','/home/<user>/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/<user>/.ssh/id_rsa');
define('FTP_USER','<user>');
define('FTP_PASS','passphrase');
define('FTP_HOST','domain.com');
ssh-kengen
如果您在;期间没有设置密码,“密码”是可选的。然后不要添加它wp-config.php
这解决了我的问题。而且我根本不需要这样做chown
。但是我在其他地方看到过这种方法。
参考:
通常您只需将插件上传到wp-content\plugins
目录即可。如果您无法通过 SFTP 访问此目录,恐怕您可能会被卡住。
您可以通过在命令提示符上键入以下命令来轻松获取它
sudo chown -R www-data:www-data your_folder_name
或将以下代码复制并粘贴到您的 wp-config.php 文件中。
define('FS_METHOD', 'direct');
其中“your_folder_name”是您的 WordPress 安装在此文件夹中的文件夹。
将以下代码添加到 wp-config
define('FS_METHOD', 'direct');
FS_METHOD强制文件系统方法。它只能是直接的、ssh2、ftpext 或 ftpsockets。通常,只有在遇到更新问题时才应更改此设置。如果您更改它并且它没有帮助,请将其更改回来/删除它。在大多数情况下,如果自动选择的方法不起作用,将其设置为 'ftpsockets' 将起作用。
(主要偏好)“直接”强制它使用来自 PHP 内部的直接文件 I/O 请求,这会在配置不当的主机上引发安全问题,这会在适当时自动选择。
(次要偏好)“ssh2”是强制使用 SSH PHP 扩展(如果已安装)
(3rd Preference) "ftpext"是强制使用 FTP PHP 扩展进行 FTP 访问,最后
(第 4 种偏好)“ftpsockets”利用 PHP Sockets 类进行 FTP 访问
欲了解更多信息,请访问:http ://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants
WordPress 2.7 允许您直接上传 zip 文件(插件页面底部有一个链接)——无需 FTP 访问。这是 2.7 中的一个新功能,它仅适用于插件(还不是主题)。
复活一个旧线程,但是有一个很棒的新插件,称为SSH SFTP 更新程序支持,它添加了 SFTP 功能,而无需编辑您的wp-config.php
文件。此外,Wordpress 的 SFTP 实现依赖于一些有些晦涩难懂的 PHP 模块,这些模块通常不会在服务器上启用;这个插件打包了一个不同的 PHP SFTP 插件,所以你不必在 Apache 端配置任何东西。
我在让 SFTP 支持工作时遇到了很多问题——这个插件解决了所有这些问题,真是太棒了。
stereointeractive 的答案涵盖了所有选项。只是想提一下使用 FTP 的另一种方式。我猜你不允许FTP访问的原因是为了安全。解决这些安全问题的一种方法是运行仅在 127.0.0.1 上侦听的 FTP 服务器
这允许您从 WordPress 内部使用 FTP,并且您将能够安装插件而不会将其暴露给世界其他地方。这也可以应用于其他流行的 Web 应用程序,例如 Joomla!和 Drupal。这就是我们对BitNami 设备和云服务器所做的事情,并且运行良好。
是的,直接在WordPress中安装插件。
其他选项
我还推荐SSH SFTP Updater Support 插件。刚刚也解决了我所有的问题……尤其是在通过管理员删除插件方面。只需以通常的方式安装它,下次 WordPress 提示您输入 FTP 详细信息时,将有额外的字段供您复制/粘贴您的私人 SSH 密钥或上传您的 PEM 文件。
我唯一的问题是让它记住密钥(尝试了两种方法)。不喜欢每次我需要删除插件时都必须查找并输入它的想法。但至少现在这是一个可靠的解决方案。
尝试这个
1)在wp-config.php
添加define('FS_METHOD', 'direct');
2)将wp-content
目录设置777
为可写。
3)现在安装插件。
我看到很多人建议将权限设置为 777。我在 2 天前遇到了同样的问题,我所做的只是将其添加到 wp-content
define('FS_METHOD', 'direct');
和
将插件文件夹的权限设置为 775
这解决了我询问 FTP 访问登录名/密码的问题。
在此之前,我必须通过将 .zip 文件添加到插件文件夹来手动添加插件,然后去wp-admin/plugins
安装它。
可以使用 SFTP 或 SSH 自动更新 WordPress 中的插件,但您需要有 ssh2 pecl 扩展。您可以使用以下教程了解如何操作
我们使用 SFTP 和 SSH(在我们的开发和实时服务器上),我已经尝试(虽然不太难)使用 WordPress 上传功能。我同意 Toby,将您的插件上传到wp-content/plugins
目录,然后从那里激活它们。
试试这个检查是否为 wp-content 文件夹提供了正确的权限。
编辑 wp-config.php 添加以下行
define('FS_METHOD', 'direct');
chmod 将“wp-content”目录更改为 www-data 以获得完全访问权限。
现在尝试安装插件。
是的,你可以做到。
您需要添加
define('METHOD','direct');
在你的 wpconfig 中。但这种方法并不可取,因为它存在安全隐患。
谢谢,
方法一: 你可以这样设置: 1.在wp-config.php中你需要写这几行。
define('FS_METHOD', 'direct');
注意:把它放在define('DB_CHARSET', 'utf8mb4')之后。
方法二:
或者你也可以设置这个
define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");
请添加define('FS_METHOD','direct');
wp-config.php
设置 ftp 甚至 SFTP 连接或 chmod 777 对于本地环境以外的任何东西都是不好的方法。甚至打开 SFTP 方法也会引入更多不需要的安全风险。
需要的是这些目录的所有者对 /wp-content/uploads 和 /wp-content/plugins/ 的可写权限。(linux ls -la 会显示所有权)。
运行的默认 apache 用户是 www-data。
chmod 777 允许机器上的任何用户编辑这些文件,而不仅仅是 apache/php 线程用户。
如果您还没有使用 SFTP,它将从外部来源引入另一个可能的故障点。而您只需要运行 apache/php 进程的本地用户访问即可完成目标。
没有看到任何人提出这些观点,所以我想我会提供这些信息来帮助我们在线解决我们持续存在的 WP 安全问题。
这是一个简单的方法。
执行以下命令。
这将为 Apache 启用 mod_rewrite 模块
$sudo a2enmod rewrite
此命令会将文件夹的所有者更改为 www-data
$sudo chown -R www-data [Wordpress Folder Location]
执行上述命令后,您可以在没有 FTP 的情况下安装任何主题。
You can add following in wp-config.php
define('METHOD','direct');
Here is a youtube video that explaining how to do it. https://youtu.be/pq4QRp4427c
当您没有在 /wp-content 目录上写入权限时,WordPress 不允许您通过 WordPress 管理仪表板上传任何插件的唯一原因。请记住,您的 wordpress 目录 /wp-content 需要 0755 权限级别。有多种方法可以更改文件夹的权限级别。
使用 cPanel 更改文件权限:
转到文件管理器,打开您的 wordpress 网站应该位于的公共 HTML 文件夹,或者如果您的网站位于其他文件夹中,则打开站点根目录。在您的 WordPress 根目录中导航到 wp-content 文件夹;在 wp-content 文件夹行的末尾,最后一个框带有该文件夹的文件权限。确保将文件夹权限级别编辑为 0755,您就完成了。
使用 SSH 终端更改文件权限:
在您的终端中找到 WordPress 站点的根目录,在我的例子中是 /var/www/html,因此要进入 WordPress 根目录,请输入以下命令:
cd /var/www/html
现在您位于所需文件夹 /wp-content 所在的 WordPress 根目录中。因此,要更改文件权限,请键入以下命令:
sudo chmod wp-content 755
这会将您的 /wp-content 目录文件权限更改为 0755。
现在您不会收到通过 FTP 上传 wordpress 插件的错误消息。
两步
在 wp-config 文件中添加以下代码
define('FS_METHOD', 'direct');
我们需要对该文件夹授予完全权限,例如服务器是否通过 SSH 连接,然后将以下代码粘贴到终端中,并确保您位于网站文件夹中,然后运行以下代码
sudo chmod -R 775 wp-content/plugins
或授予网站文件夹的完全权限
sudo chown -R www-data:www-data website_folder
使用 SSH 安装插件的最佳方式是 WPCLI。
请注意,使用 WP CLI 命令必须使用 SSH 访问。在使用它之前,请检查 WP CLI 是否安装在您的托管服务器或机器上。
如何检查:wp --version
[它将显示已安装的 wp cli 版本]
如果没有安装,如何安装: 安装 WP-CLI 之前,请确保环境满足最低要求:
类 UNIX 环境(OS X、Linux、FreeBSD、Cygwin);Windows 环境中的有限支持。PHP 5.4 或更高版本 WordPress 3.7 或更高版本。比最新 WordPress 版本更早的版本可能会降低功能
如果以上几点都满意,请按照以下步骤操作:参考网址:WPCLI
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
[ download the wpcli phar ]
php wp-cli.phar --info [ check whether the phar file is working ]
chmod +x wp-cli.phar [ change permission ]
sudo mv wp-cli.phar /usr/local/bin/wp [ move to global folder ]
wp --info [ to check the installation ]
现在 WP CLI 已准备好安装。
现在,您可以使用以下命令安装 WordPress.org 中可用的任何插件:
wp install plugin plugin-slug
wp delete plugin plugin-slug
wp deactivate plugin plugin-slug
注意:wp cli 只能安装那些在 wordpress.org 中可用的插件
您可以拥有 fileZilla 并使用 FTP 帐户来更新插件和主题。或者您可以登录到 Cpanel 并访问 wordpress 文件夹,然后您可以通过解压缩主题或插件来更新主题。