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

时间:2009-03-12 20:46:04

标签: wordpress

我在我的实时服务器上使用WordPress,该服务器仅使用SFTP密钥使用SSH

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

33 个答案:

答案 0 :(得分:721)

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

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

https://github.com/WordPress/WordPress/blob/4.2.2/wp-admin/includes/file.php#L912

WordPress会尝试将临时文件写入/wp-content目录。如果成功,它会将文件的所有权与其自己的uid进行比较,如果匹配,则允许您使用' direct'安装插件,主题或更新的方法。

现在,如果由于某种原因你不想依赖自动检查要使用哪个文件系统方法,你可以在'FS_METHOD'文件中定义一个常量wp-config.php,即{ {1}}它将使用该方法。请注意,如果您将其设置为' direct',但您的网络用户(运行您的网络服务器的用户名)没有正确的写入权限,您将收到错误。

总之,如果您不想(或不能)更改wp-content的权限,以便您的Web服务器具有写权限,请将其添加到您的wp-config.php文件中:

'direct', 'ssh', 'ftpext' or 'ftpsockets'

此处解释权限:

答案 1 :(得分:235)

如前所述,perm修复程序都不再起作用。您需要相应地更改权限并将以下内容放入wp-config.php

define('FS_METHOD', 'direct');

答案 2 :(得分:96)

只是想补充一点,您绝不能将任何文件夹的wp-content权限或权限设置为777

这就是我必须做的事情:

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

# chown -R apache wordpress/

如果是Ubuntu,Mint或Debian # chown -R www-data:www-data wordpress/

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

# chgrp -R apache wordpress/

为Ubuntu,Mint或Debian跳过此步骤

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

# chmod u+wrx wordpress/*

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

TL; DR版本:

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

答案 3 :(得分:69)

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

答案 4 :(得分:49)

打开wp-config.php文件并添加以下行:

define('FS_METHOD', 'direct');

这对我有用......谢谢

答案 5 :(得分:33)

只需快速更改 wp-config.php

define('FS_METHOD','direct');

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

替代方法:

  

有些主机会阻止此方法工作   轻松你的WordPress更新。幸运的是,还有另一种方法   防止此有害生物提示您输入FTP用户名和密码。

     

再次,在wp-config.php文件中的MYSQL登录声明之后,   添加以下内容:

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

答案 6 :(得分:21)

为了能够使用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');

如果您在ssh-kengen期间未设置密码短语,则'密码短语'是可选的;然后不要在wp-config.php

中添加它

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

参考文献:

答案 7 :(得分:18)

通常您只需将插件上传到wp-content\plugins目录即可。如果您无法通过SFTP访问此目录,我担心您可能会被卡住。

答案 8 :(得分:17)

您可以通过在命令promt

上键入以下命令来轻松获得它
sudo chown -R www-data:www-data your_folder_name

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

define('FS_METHOD', 'direct');

其中&#34; your_folder_name&#34;是在此文件夹中安装WordPress的文件夹。

答案 9 :(得分:15)

在终端

中执行以下代码
sudo chown -R www-data /var/www

有关详细信息,请访问 Wordpress on Ubuntu install plugins without FTP access

答案 10 :(得分:15)

将以下代码添加到wp-config

define('FS_METHOD', 'direct');

FS_METHOD 强制执行文件系统方法。它应该只是直接,ssh2,ftpext或ftpsockets。通常,只有在遇到更新问题时才应更改此设置。如果您更改它并且没有帮助,请将其更改/删除。在大多数情况下,如果自动选择的方法没有,则将其设置为“ftpsockets”将起作用。

(主要偏好)“直接”强制它使用来自PHP内部的直接文件I / O请求,这很难在配置不当的主机上打开安全问题,这在适当时自动选择

(辅助首选项)“ssh2”是强制使用SSH PHP扩展(如果已安装)

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

(第四个偏好)“ftpsockets”利用PHP套接字类进行FTP访问

有关详细信息,请访问:http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants

答案 11 :(得分:13)

如果您使用的是Ubuntu,那么对我有用的快速解决方案是为Apache用户提供所有权(默认情况下为www-data),如下所示:

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

答案 12 :(得分:11)

WordPress 2.7允许您直接上传zip文件(插件页面底部有一个链接) - 无需FTP访问。这是2.7中的一个新功能,它仅适用于插件(不是主题)。

答案 13 :(得分:9)

恢复旧线程,但有一个名为SSH SFTP Updater Support的新插件,可添加SFTP功能而无需编辑wp-config.php文件。此外,Wordpress的SFTP实现依赖于一些有些模糊的PHP模块,这些模块通常不在服务器上启用;这个插件包装了一个不同的PHP SFTP插件,所以你不必在Apache端配置任何东西。

我遇到了很多让SFTP支持工作的问题 - 这个插件解决了所有这些问题并且很棒。

答案 14 :(得分:9)

  1. 使用php_mod&amp;更新从fastcgi更改为cgi SuEXEC已启用 ,适合我。
  2. 不要忘记,如果不能尝试改变

    1. 以root身份将wp-content更改为775

      chmod -R 775 ./wp-content

    2. 添加到wp-config.php

      定义(&#39; FS_METHOD&#39;,&#39;直接&#39;);

    3. 我希望它有效

答案 15 :(得分:9)

试试这个

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

2)将“wp-content”目录设置为777表示可写。

3)现在安装插件。

答案 16 :(得分:8)

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

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

    1. 为插件代码创建zip文件。
    2. 转到管理员端(/ test / wp-admin)然后转到插件链接然后点击添加新的然后浏览插件zip文件夹并安装插件然后出来选项激活插件所以这样做激活插件并激活插件。

答案 17 :(得分:8)

我还推荐SSH SFTP Updater Support plugin。刚解决了我所有的问题......特别是关于通过管理员删除插件的问题。只需以通常的方式安装它,下次当您收到WordPress的FTP详细信息提示时,您将有额外的字段来复制/粘贴您的私人SSH密钥或上传您的PEM文件。

我唯一的问题是让它记住密钥(尝试了两种方法)。不喜欢每次我需要删除插件时必须找到并输入它的想法。但至少它现在是一个可靠的解决方案。

答案 18 :(得分:8)

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

上监听的FTP服务器

这允许您从WordPress内部使用FTP,并且您可以安装插件,而不会将其暴露给世界其他地方。这也可以应用于其他流行的Web应用程序,如Joomla!和Drupal。这就是我们对BitNami appliancescloud servers所做的工作,并且效果很好。

答案 19 :(得分:6)

可以使用SFTP或SSH自动更新WordPress中的插件,但您需要具有ssh2 pecl扩展名。您可以使用以下tutorial

了解如何操作

答案 20 :(得分:6)

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

答案 21 :(得分:6)

我看到很多人都建议将权限设置为777.我在2天前遇到了同样的问题而我所做的只是将其添加到wp-content

define('FS_METHOD', 'direct');

  

为插件文件夹

设置权限为775

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

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

答案 22 :(得分:5)

Try this Check whether the correct permission is given to wp-content folder.

Edit the wp-config.php add the following line

context.Context

chmod the "wp-content" directory to www-data for full access.

Now try installing the plugin.

答案 23 :(得分:2)

设置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安全问题。

答案 24 :(得分:1)

这是一种简单的方法。

执行以下命令。

这将为Apache启用mod_rewrite模块

$sudo a2enmod rewrite

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

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

执行上述命令后,您可以不使用FTP来安装任何主题。

答案 25 :(得分:1)

当您没有权限在/ 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 

现在,您位于WordPress根目录中,所需的文件夹/ wp-content位于。因此,要更改文件权限,请输入以下命令:

sudo chmod wp-content 755 

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

现在您将不会收到通过FTP上传wordpress插件的错误消息。

答案 26 :(得分:1)

方法1: 您可以设置: 1.在wp-config.php中,您需要编写此行。

define('FS_METHOD', 'direct'); 

注意:将其放在define('DB_CHARSET','utf8mb4')之后。

  1. 设置wp-content权限或递归设置777完全权限 您可以通过filezilla给它。写单击目录>权限>检查读写并执行,然后检查递归到子目录

    方法2:

或者您也可以设置

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

答案 27 :(得分:0)

使用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中可用的那些插件

答案 28 :(得分:0)

是的,您可以做到。

您需要添加

define('METHOD','direct');
在您的wpconfig中。 但是,由于具有安全漏洞,因此这种方法不是可取的。

谢谢

答案 29 :(得分:0)

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

答案 30 :(得分:0)

两个步骤

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

define('FS_METHOD', 'direct');

2)我们需要授予该文件夹的完全许可权,例如服务器是否连接SSH,然后将以下代码粘贴到终端中,并确保您位于网站文件夹中,然后运行以下代码

sudo chmod -R 777 wp-content/plugins 

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

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

答案 31 :(得分:0)

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

define('METHOD','direct');

这是一个YouTube视频,介绍了操作方法。 https://youtu.be/pq4QRp4427c

答案 32 :(得分:-1)

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