我在我的实时服务器上使用WordPress,该服务器仅使用SFTP密钥使用SSH。
我想安装和升级插件,但似乎您需要输入FTP登录才能安装插件。有没有办法通过手动上传文件而不是让WordPress处理整个过程来安装和升级插件?
答案 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)
wp-config.php
添加define('FS_METHOD', 'direct');
wp-content/
,wp-content/plugins/
。wp-content/plugins
目录中)。使用版本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选项。
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)
php_mod
&amp;更新从fastcgi
更改为cgi
SuEXEC
已启用
,适合我。以root身份将wp-content更改为775
chmod -R 775 ./wp-content
添加到wp-config.php
定义(&#39; FS_METHOD&#39;,&#39;直接&#39;);
我希望它有效
答案 15 :(得分:9)
试试这个
1)在wp-config.php中添加define('FS_METHOD','direct');
2)将“wp-content”目录设置为777表示可写。
3)现在安装插件。
答案 16 :(得分:8)
是的,直接在WordPress中安装插件。
其他选项
答案 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 appliances和cloud 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')之后。
设置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文件夹,然后可以通过解压缩主题或插件来更新主题。