有些时候,大家可能回遇到在安装/更新WordPress插件,WordPress弹出要求输入FTP口令的界面,为什么回出现这种情况,叶子给大家解释一下WordPress的安装/更新原理,以及遇到这样的问题的解决方法。
我在在线服务器上使用WordPress,它只使用SSH密钥的SFTP来更新上传文件。
我想安装和升级插件,但似乎需要输入FTP登录口令才能安装插件。有没有办法通过手动上传文件来安装和升级插件,而不是让WordPress处理整个过程?
原因
出现要求提示输入FTP连接信息原因,是因为WordPress对网站目录没有写入的权限,比如你建站上传WordPress代码的用户是upload,而你的网站运行的用户是www,www对upload的目录没有写入的权限。又或者,你的目录权限是644。
WordPress只会在尝试安装插件或WordPress更新时,遇到无法直接写入/wp-content目录的情况,才会提示输入FTP连接信息。
只要Web服务器对必要的文件具有写入权限,它将自动处理更新和安装。
所以,WordPress不强制要求具有FTP/SFTP/SSH访问权限,但WordPress要求在Web服务器上有特定的文件权限。
它将按顺序尝试各种方法,如果Direct和SSH方法不可用,则会使用FTP。
WordPress将尝试向/wp-content目录写入一个临时文件。如果成功,它会将文件的所有权与其自己的uid进行比较,如果匹配,它将允许您使用“Direct”方法安装插件、主题或更新。
现在,如果由于某些原因您不想依赖于自动检查要使用的文件系统方法,您可以在wp-config.php文件中定义一个常量‘FS_METHOD’,参数有‘direct’、‘ssh’、‘ftpext’、‘ftpsocket’四种。
请记住,如果您将此设置为“direct”,但您的Web用户(运行Web服务器的用户名)没有正确的写入权限,您将收到一个错误。
总之,如果您不想(或不能)更改wp-content的权限,而您的Web服务器具有写入权限,那么将以下内容添加到wp-config.php文件:
define('FS_METHOD', 'direct');
解决方法
两个步骤:
- 在wp-config文件中添加以下代码。
DEFINE(‘FS_METHOD’,‘direct’);
- 我们需要给文件夹以完全权限,使用SSH连接服务器,则将下面的代码粘贴到终端中,切换到网站文件夹,然后运行下面的代码。
sudo chmod -R 777 wp-content/plugins
或授予对网站文件夹的完全权限。
其他方法
上面是解决了在WordPress后台上传安装插件提示输入FTP口令的问题,其实还有另外一个暴力方法。
我们还可以直接将插件在本地电脑上解压,然后通过SFTP或FTP将插件代码文件及文件夹都上传到网站目录下面的wp-content/plugins目录中,然后在登录WordPress后台将插件激活。