我可以在不提供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/*
- 在
wp-config.php
添加define('FS_METHOD', 'direct');
- 使服务器可写入目录
wp-content/
,wp-content/plugins/
。 - 安装插件(将插件目录复制到
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选项。
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中安装插件。
- 复制插件文件夹并粘贴到WordPress插件文件夹中。
- 去pipe理员端(/testing/ WP – pipe理员)然后去插件链接,并检查插件的名称。
- 激活插件,以便轻松安装插件。
其他选项
- 创build插件代码的zip文件。
- 然后去插件链接,然后点击添加新的然后浏览插件的zip文件夹,并安装插件,然后出来选项激活插件,所以这样做激活插件和(/ test / wp-admin)激活插件。
可以使用SFTP或SSH自动更新WordPress中的插件,但是您需要具有ssh2 pecl扩展名。 你可以find如何做到这一点,使用下面的教程
我们在SSH上使用SFTP(在我们的开发和在线服务器上),并且我尝试了(不太难)使用WordPress上传function。 我同意Toby的说法,把你的插件上传到wp-content/plugins
目录,然后从那里激活它们。
1.从php_mod更改为fastcgi与cgi & SuEXEC启用,为我工作
不要忘记,如果不工作,尝试改变
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
并且必须安装它。