我在我的live服务器上使用WordPress,它只使用SSH密钥的SFTP。
我想安装和升级插件,但似乎需要输入FTP登录来安装插件。有没有一种方法可以通过手动上传文件来安装和升级插件,而不是让WordPress来处理整个过程?
我在我的live服务器上使用WordPress,它只使用SSH密钥的SFTP。
我想安装和升级插件,但似乎需要输入FTP登录来安装插件。有没有一种方法可以通过手动上传文件来安装和升级插件,而不是让WordPress来处理整个过程?
当前回答
如果你使用Ubuntu,一个对我有效的快速解决方案是将所有权交给Apache用户(默认为www-data),如下所示:
cd your_wordpress_directory
sudo chown -R www-data wp-content
sudo chmod -R 755 wp-content
其他回答
只是想补充一点,你绝对不能将wp-content权限或任何文件夹的权限设置为777。
这就是我必须要做的:
1)我将wordpress文件夹的所有权(递归地)设置为apache用户,如下所示:
# chown -R apache wordpress/
2)我将wordpress文件夹的组所有权(递归)更改为apache组,如下所示:
# chgrp -R apache wordpress/
3)赋予目录所有者完全权限,如下所示:
# chmod u+wrx wordpress/*
这就成功了。顺便说一句,我的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选项。
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中添加它
这解决了我的问题。而且我根本不用嚼东西。但我在其他地方看到过这种方法。
引用:
http://wp.tutsplus.com/articles/tips-articles/quick-tip-upgrade-your-wordpress-site-via-ssh/ http://codex.wordpress.org/Editing_wp-config.php#Enabling_SSH_Upgrade_Access
试试这个检查是否给wp-content文件夹正确的权限。
编辑wp-config.php添加以下行
define('FS_METHOD', 'direct');
Chmod“wp-content”目录到www-data进行完全访问。
现在尝试安装插件。
当你没有权限在/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插件的错误信息。
如果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