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

我在使用SSH密钥的SFTP服务器上使用WordPress 。

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

如果WordPress无法直接写入/wp-content WordPress只会在尝试安装插件或WordPress更新时提示您inputFTP连接信息。 否则,如果您的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进行比较,如果匹配,则允许您使用安装插件,主题或更新的“直接”方法。

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

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

 define('FS_METHOD', 'direct'); 

权限解释在这里:

如前所述,没有任何烫发修复工作了。 您需要相应地更改烫发,并将以下内容放入您的wp-config.php

 define('FS_METHOD', 'direct'); 

只是想补充一点,你一定不要把任何文件夹的wp-content权限设置为777

这是我必须做的:

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

# chown -R apache wordpress/

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

# chgrp -R apache wordpress/

3)给所有者权限的目录,如下所示:

# chmod u+wrx wordpress/*

而这样做的工作。 我的wp-content文件夹有755权限,顺便说一句。

TL; DR版本:

 # chown -R apache:apache wordpress # chmod u+wrx wordpress/* 
  1. wp-config.php添加define('FS_METHOD', 'direct');
  2. 使服务器可写入目录wp-content/wp-content/plugins/
  3. 安装插件(将插件目录复制到wp-content/plugins目录中)。

在3.2.1版本上工作

只需要快速更改wp-config.php

 define('FS_METHOD','direct'); 

就是这样,享受你的WordPress的更新没有FTP

替代方法:

那里有主机,将阻止这种方法来减轻你的WordPress更新。 幸运的是,还有另一种方法来防止这种有害生物提示您input您的FTP用户名和密码。

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

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

为了能够使用SSH2进行更新和主题上传,您必须生成SSH密钥并安装PHP SSH模块。 然后WordPress会检测到你有SSH2可用,你会看到一个不同的选项(SSH2)上传/升级时显示。

1.)确保你已经安装了debian的PHP模块,它是:

 sudo apt-get install libssh2-php 

2.)生成SSH密钥,添encryption码是可选的:

 ssh-keygen cd ~/.ssh cp id_rsa.pub authorized_keys 

3.)更改权限,以便WordPress可以访问这些密钥:

 cd ~ chmod 755 .ssh chmod 644 .ssh/* 

现在,您将在执行上传/升级/插件时获得SSH2选项。 WP SSH连接

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-config.php文件并添加以下行:

define('FS_METHOD', 'direct');

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

在terminal执行以下代码

 sudo chown -R www-data /var/www 

有关更多详细信息,请访问Ubuntu上的Wordpress安装插件,无需FTP访问

将以下代码添加到wp-config

 define('FS_METHOD', 'direct'); 

FS_METHOD强制文件系统方法。 它应该只是直接的,ssh2,ftpext或ftpsockets。 一般来说,只有在遇到更新问题时才应该更改。 如果你改变它并没有帮助,把它改回去/删除它。 在大多数情况下,如果自动select的方法没有,将其设置为“ftpsockets”将会工作。

(主要首选项)“直接”迫使它使用来自PHP内部的直接文件I / O请求,这充满了在configuration不当的主机上打开安全问题,这是在适当的时候自动select的。

(Secondary Preference)“ssh2”是强制使用SSH PHP扩展(如果安装的话)

(3rd Preference)“ftpext”是强制使用FTP PHP Extension for FTP Access,最后

(第四优先)“ftpsockets”利用PHP Sockets Class进行FTP访问

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

如果你在Ubuntu上 ,那么一个快速的解决scheme就是让Apache用户拥有所有权(默认情况下是www-data),如下所示:

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

您可以通过在命令promt上键入以下命令来轻松获取它

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

其中“your_folder_name”是您的WordPress安装在此文件夹内的文件夹。

WordPress 2.7让你直接上传一个zip文件(在插件页面的底部有一个链接) – 不需要FTP访问。 这是2.7中的一个新function,它仅适用于插件(不是主题)。

复活旧的线程,但有一个奇妙的新的插件称为SSH SFTP更新支持 ,增加了SFTPfunction,而无需编辑您的wp-config.php文件。 而且,Wordpress的SFTP实现依赖于一些在服务器上通常不启用的模糊的PHP模块; 这个插件打包了一个不同的PHP SFTP插件,所以你不必在Apache端configuration任何东西。

我遇到了许多SFTP支持工作的问题 – 这个插件解决了所有这些问题,而且太棒了。

我也推荐SSH SFTP Updater Support插件 。 刚刚解决了我所有的问题…特别是在通过pipe理员获取插件删除。 只需按照通常的方式进行安装,下次当您提示WordPress获取FTP详细信息时,将会有额外的字段供您复制/粘贴您的私人SSH密钥或上传您的PEM文件。

唯一的问题是让它记住钥匙(尝试两种方法)。 不喜欢每次需要删除插件时都必须查找并input它的想法。 但至less现在是一个可靠的解决scheme。

尝试这个

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

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

3)现在安装插件。

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

这使您可以使用WordPress内部的FTP,您将能够安装插件,而不会将其暴露给世界其他地方。 这也可以应用到其他stream行的Web应用程序,如Joomla! 和Drupal。 这就是我们用BitNami设备和云服务器所做的工作,工作得很好。

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

  1. 复制插件文件夹并粘贴到WordPress插件文件夹中。
  2. 去pipe理员端(/testing/ WP – pipe理员)然后去插件链接,并检查插件的名称。
  3. 激活插件,以便轻松安装插件。

其他选项

  1. 创build插件代码的zip文件。
  2. 然后去插件链接,然后点击添加新的然后浏览插件的zip文件夹,并安装插件,然后出来选项激活插件,所以这样做激活插件和(/ test / wp-admin)激活插件。

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

我们在SSH上使用SFTP(在我们的开发和在线服务器上),并且我尝试了(不太难)使用WordPress上传function。 我同意Toby的说法,把你的插件上传到wp-content/plugins目录,然后从那里激活它们。

1.从php_mod更改fastcgicgiSuEXEC启用,为我工作

不要忘记,如果不工作,尝试改变
2.以root身份将wp-content更改为775
chmod -R 775 ./wp-content
3-添加到wp-config.php
define('FS_METHOD','direct');

我希望它的作品

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

 define('FS_METHOD', 'direct'); 

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

这解决了我问FTP访问login/密码的问题。

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