我可以在不提供FTP访问的情况下安装/更新WordPress插件吗?

我在我的live服务器上使用WordPress,它只使用SFTP,使用SSH键。

我想安装和升级插件,但似乎需要输入FTP登录来安装插件。有没有一种方法可以通过手动上传文件来安装和升级插件,而不是让WordPress来处理整个过程?

439176 次浏览

通常你可以把你的插件上传到wp-content\plugins目录。如果你不能通过SFTP访问这个目录,恐怕你会被卡住。

WordPress 2.7允许你直接上传一个zip文件(在插件页面底部有一个链接)——不需要FTP访问。这是2.7中的一个新特性,它只对插件有效(还不包括主题)。

我们使用SFTP和SSH(在我们的开发服务器和活动服务器上),我也尝试过(虽然不是很难)使用WordPress上传功能。我同意Toby的观点,将插件上传到wp-content/plugins目录,然后从那里激活它们。

可以使用SFTP或SSH在WordPress中自动更新插件,但你需要有ssh2 pecl扩展。您可以使用下面的教程找到如何做到这一点

当WordPress无法直接写入/wp-content时,它只会在试图安装插件或WordPress更新时提示您输入FTP连接信息。否则,如果您的web服务器具有对必要文件的写访问权,它将自动负责更新和安装。这种方法不需要你有FTP/SFTP或SSH访问权限,但它需要你在你的web服务器上设置特定的文件权限。

它将按顺序尝试各种方法,如果Direct和SSH方法不可用,则退回到FTP。

< a href = " https://github.com/WordPress/WordPress/blob/4.2.2/wp-admin/includes/file.php L912 " > https://github.com/WordPress/WordPress/blob/4.2.2/wp-admin/includes/file.php L912 < / >

WordPress会尝试写一个临时文件到你的/wp-content目录。如果成功,它会将文件的所有权与它自己的uid进行比较,如果有匹配,它将允许你使用“直接”方法安装插件、主题或更新。

现在,如果出于某种原因,您不想依赖于自动检查要使用哪个文件系统方法,您可以在wp-config.php文件中定义一个常量'FS_METHOD',即'direct', 'ssh', 'ftpext' or 'ftpsockets',它将使用该方法。请记住,如果您将此设置为“direct”,但您的web用户(web服务器运行的用户名)没有适当的写权限,您将收到一个错误。

总之,如果你不想(或你不能)改变wp-content的权限,这样你的web服务器就有写权限,那么把这个添加到你的wp-config.php文件中:

define('FS_METHOD', 'direct');

权限说明如下:

  • < a href = " http://codex.wordpress.org/Updating_WordPress Automatic_Update " > http://codex.wordpress.org/Updating_WordPress Automatic_Update < / >
  • http://codex.wordpress.org/Changing_File_Permissions < a href = " http://codex.wordpress.org/Changing_File_Permissions " > < / >

立体交互的答案涵盖了所有选项。只是想提一下使用FTP的另一种方式。我猜你不允许FTP访问的原因是为了安全。解决这些安全问题的一种方法是只在127.0.0.1上运行FTP服务器

这允许你在WordPress内部使用FTP,你可以安装插件,而不会暴露给其他世界。这也可以应用到其他流行的web应用程序,如Joomla!和Drupal。这就是我们对BitNami这样电器云服务器所做的事情,效果非常好。

复活一个旧线程,但是有一个叫做支持SSH SFTP更新的很棒的新插件,它添加了SFTP功能,而不需要编辑wp-config.php文件。另外,Wordpress的SFTP实现依赖于一些模糊的PHP模块,这些模块在服务器上通常不启用;这个插件打包了一个不同的PHP SFTP插件,所以你不需要在Apache端配置任何东西。

我遇到了大量的问题,SFTP支持工作-这个插件解决了所有的问题,只是梦幻般的。

如果你在Ubuntu上,一个对我有效的快速解决方案是将所有权交给Apache用户(默认为www-data),如下所示:

cd your_wordpress_directory
sudo chown -R www-data wp-content
sudo chmod -R 755 wp-content

如前所述,没有任何烫发修复工作了。你需要相应地改变烫发,并将以下内容放在wp-config.php中:

define('FS_METHOD', 'direct');

我也推荐SSH SFTP更新支持插件。这也解决了我所有的问题,特别是通过管理员删除插件。只要按通常的方式安装它,下次WordPress提示您提供FTP详细信息时,将会有额外的字段供您复制/粘贴您的私人SSH密钥或上传您的PEM文件。

唯一的问题是让它记住钥匙(两种方法都试过了)。我不喜欢每次需要删除插件时都要找到并输入它。但至少目前它是一个可靠的解决方案。

  1. wp-config.php中添加define('FS_METHOD', 'direct');
  2. 使服务器可写目录wp-content/wp-content/plugins/
  3. 安装插件(将插件目录复制到wp-content/plugins目录)。

工作版本3.2.1

试试这个

1)在wp-config.php中添加define('FS_METHOD', 'direct');

2)将wp-content目录设置为777为可写目录。

3)现在安装插件。

只是想补充一点,你必须永远不要将wp-content权限或任何文件夹的权限设置为777

这就是我必须要做的:

1)我将wordpress文件夹的所有权(递归地)设置为apache用户,如下所示:

# EYZ0

2)我将wordpress文件夹的组所有权(递归)更改为apache组,如下所示:

# EYZ0

3)赋予目录所有者完全权限,如下所示:

# EYZ0

这就成功了。顺便说一句,我的wp-content文件夹有755权限。

TL;博士版:

# chown -R apache:apache wordpress
# chmod u+wrx wordpress/*

为了能够使用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选项。 WP SSH Connection

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');

'passphrase'是可选的,如果你没有在ssh-kengen期间设置passphrase;然后不要把它添加到wp-config.php

这解决了我的问题。我根本不需要做chown。但我在其他地方看到过这种方法。

引用:

是的,直接在WordPress中安装插件。

  1. 复制插件文件夹并粘贴到WordPress插件文件夹。
  2. 转到管理端(/test/wp-admin),然后转到插件链接,检查插件的名称。
  3. 激活插件,以便轻松安装插件。

其他选择

  1. 为插件代码创建zip文件。
  2. 转到管理端(/test/wp-admin),然后转到插件链接,然后单击add new,然后浏览插件zip文件夹,安装插件,然后出现激活插件选项,那么就激活插件,激活插件。

将以下代码添加到wp-config中

define('FS_METHOD', 'direct');

FS_METHOD强制使用文件系统方法。只能是direct、ssh2、ftpext或ftpsockets。通常,只有在遇到更新问题时才应该更改此选项。如果你改了也没用,那就改回来/去掉。在大多数情况下,如果自动选择的方法不起作用,将其设置为'ftpsockets'将正常工作。

(主要偏好)“直接”迫使它从PHP内部使用直接文件I/O请求,这在配置不佳的主机上充满了安全问题,在适当的时候自动选择。

(二级偏好)“ssh2”是强制使用SSH PHP扩展如果安装

(第三优先)“ftpext”是强制使用FTP PHP扩展进行FTP访问,最后

(4日偏好)“ftpsockets”使用PHP套接字类进行FTP访问

更多信息请访问:http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants

您可以通过在命令提示符上键入以下命令很容易地获得它

sudo chown -R www-data:www-data your_folder_name

或复制&将以下代码粘贴到wp-config.php文件中。

define('FS_METHOD', 'direct');

“your_folder_name”是你的WordPress安装在这个文件夹中的文件夹。

# EYZ0 < / >强

define('FS_METHOD','direct');

就是这样,享受你的wordpress更新没有ftp!

替代方法:

有一些主机会阻止这个方法工作 来简化您的WordPress更新。幸运的是,还有另一种方法 阻止这个害虫提示您输入FTP用户名和密码 同样,在wp-config.php文件中的MYSQL登录声明之后,

define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");

在终端中执行以下代码

sudo chown -R www-data /var/www

欲了解更多详情,请访问 # EYZ0 < / p >

打开wp-config.php文件,添加如下一行:

# EYZ0

这对我很有用…谢谢

我看到很多人建议将权限设置为777。2天前我也有同样的问题,我所做的就是,将此添加到wp-content

define('FS_METHOD', 'direct');

而且

设置插件文件夹的权限为775

这解决了我询问FTP访问登录名/密码的问题。

在此之前,我必须手动添加插件,将.zip文件添加到插件文件夹中,然后转到wp-admin/plugins,必须安装它。

php_mod改为fastcgi,使用cgi &SuEXEC启用(ISPConfig用户)。对我有用。

如果不工作,尝试改变wp-content775作为rootsudo用户:

chmod -R 775 ./wp-content

然后添加到wp-config.php:

define('FS_METHOD', 'direct');

祝你好运

试试这个检查是否给wp-content文件夹正确的权限。

编辑wp-config.php添加以下行

define('FS_METHOD', 'direct');

Chmod“wp-content”目录到www-data进行完全访问。

现在尝试安装插件。

设置ftp或SFTP连接或chmod 777是除了本地环境以外的任何方法。即使打开SFTP方法也会带来更多不必要的安全风险。

所需要的是/wp-content/upload的可写权限&/wp-content/plugins/这些目录的所有者。(linux ls -la将显示你的所有权)。

apache默认运行用户为www-data。

Chmod 777允许机器上的任何用户编辑这些文件,而不仅仅是apache/php线程用户。

如果您还没有使用SFTP,它将从外部来源引入另一个可能的故障点。而你只需要本地用户运行apache/php进程就可以完成这个目标。

没有看到任何人提出这些观点,所以我想我将提供这些信息,以帮助解决我们不断出现的在线WP安全问题。

您可以拥有fileZilla并使用FTP帐户来更新插件和主题。或者你可以登录到Cpanel并访问wordpress文件夹,然后你可以通过解压缩主题或插件来更新主题。

使用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版本旧的版本可能会降低功能

如果以上几点满足,请按照以下步骤操作:参考URL: 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中可用的插件

这里有一个简单的方法。

执行以下命令。

这将为Apache启用mod_rewrite模块

$sudo a2enmod rewrite

这个命令将更改文件夹的所有者为www-data

$sudo chown -R www-data [Wordpress Folder Location]

执行以上命令后,您可以在没有FTP的情况下安装任何主题。

是的,你能做到。

你需要加上

define('METHOD','direct');

在你的wpconfig。 但是这种方法不是更可取的,因为它有安全隐患

谢谢,

请在wp-config.php中添加define('FS_METHOD','direct');

当你没有权限在/wp-content目录上写内容时,WordPress不允许你通过WordPress管理仪表板上传任何插件的唯一原因。请记住,您的wordpress目录/wp-content需要0755权限级别。 有多种方法可以更改文件夹的权限级别。< / p >

使用cPanel更改文件权限:

进入文件管理器,打开你的wordpress网站应该在的公共HTML文件夹,或者如果你的网站在其他文件夹中,打开网站根目录。在你的WordPress根目录导航到wp-content文件夹;在wp-content文件夹行的末尾,最后一个框包含此文件夹的文件权限。确保将文件夹权限级别编辑为0755,就完成了。

使用SSH终端修改文件权限:

在你的终端找到WordPress站点的根目录,在我的例子中是/var/www/html,所以要移动到WordPress根目录,输入以下命令:

cd /var/www/html

现在你在WordPress根目录中,需要的文件夹/wp-content就在这里。因此,要更改文件权限键入以下命令:

sudo chmod wp-content 755

这将更改您的/wp-content目录文件权限为0755。

现在你不会得到通过FTP上传wordpress插件的错误信息。

两个步骤

  1. 在wp-config文件中添加以下代码

    define('FS_METHOD', 'direct');
    
  2. We need to give full permission to the folder like if server connected with SSH then paste below code in terminal and make sure you are inside on website folder and then run below code

    sudo chmod -R 775 wp-content/plugins
    

    或给予完全权限的网站文件夹

    sudo chown -R www-data:www-data website_folder
    

< >强方法1: 你可以这样设置: 1. 在wp-config.php中,您需要编写这些行。< / p >

define('FS_METHOD', 'direct');

注意:把这个放在define('DB_CHARSET', 'utf8mb4')之后。

  1. 设置wp-content权限或权限递归775完全权限 你可以通过filezilla传播。写点击目录>权限>检查读写和执行,并检查递归到子目录

# EYZ0

或者你也可以设置这个

define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");

您可以在wp-config.php中添加以下内容

define('METHOD','direct');

这是youtube上的一个视频,解释了如何做到这一点。# EYZ0

在我的例子中,我在RHEL 8.6上运行Apache。移动文件(而不是复制文件)导致我的wordpress根文件夹的selinux上下文错误。禁用selinux允许我重新安装插件。但是,由于这是一个生产服务器,我希望selinux处于强制模式。通过运行这个命令来恢复wordpress根目录的默认selinux上下文,我能够解决这个问题。

restorecon -vR /var/www/html/

您可以参考这个链接以获得解决与selinux相关的任何问题的其他方法。