我在我的live服务器上使用WordPress,它只使用SSH密钥的SFTP。
我想安装和升级插件,但似乎需要输入FTP登录来安装插件。有没有一种方法可以通过手动上传文件来安装和升级插件,而不是让WordPress来处理整个过程?
我在我的live服务器上使用WordPress,它只使用SSH密钥的SFTP。
我想安装和升级插件,但似乎需要输入FTP登录来安装插件。有没有一种方法可以通过手动上传文件来安装和升级插件,而不是让WordPress来处理整个过程?
当前回答
是的,你能做到。
你需要加上
define('METHOD','direct');
在wpconfig中。 但是这种方法并不可取,因为它存在安全隐患。
谢谢,
其他回答
立体交互的答案涵盖了所有选项。只是想提一下使用FTP的另一种方式。我猜你不允许FTP访问的原因是为了安全。解决这些安全问题的一种方法是只在127.0.0.1上运行FTP服务器
这允许你在WordPress内部使用FTP,你可以安装插件,而不会暴露给其他世界。这也可以应用到其他流行的web应用程序,如Joomla!和Drupal。这就是我们用BitNami设备和云服务器所做的,而且效果很好。
如果WordPress不能直接写入/wp-content,它只会在安装插件或WordPress更新时提示您输入FTP连接信息。否则,如果您的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'或'ftpsockets',它将使用该方法。请记住,如果您将此设置为“direct”,但您的web用户(web服务器运行的用户名)没有适当的写权限,您将收到一个错误。
总之,如果你不想(或你不能)改变wp-content的权限,这样你的web服务器就有写权限,那么把这个添加到你的wp-config.php文件中:
define('FS_METHOD', 'direct');
权限说明如下:
http://codex.wordpress.org/Updating_WordPress#Automatic_Update http://codex.wordpress.org/Changing_File_Permissions
设置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安全问题。
方法1: 你可以这样设置: 1. 在wp-config.php中,您需要编写这些行。
define('FS_METHOD', 'direct');
注意:把这个放在define('DB_CHARSET', 'utf8mb4')之后。
设置wp-content权限或权限递归775完全权限 你可以通过filezilla传播。写点击目录>权限>检查读写和执行,并检查递归到子目录
方法2:
或者你也可以设置这个
define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");
复活了一个旧线程,但是有一个很棒的新插件叫做SSH SFTP Updater Support,它添加了SFTP功能,而不需要编辑你的wp-config.php文件。另外,Wordpress的SFTP实现依赖于一些模糊的PHP模块,这些模块在服务器上通常不启用;这个插件打包了一个不同的PHP SFTP插件,所以你不需要在Apache端配置任何东西。
我遇到了大量的问题,SFTP支持工作-这个插件解决了所有的问题,只是梦幻般的。