我可以在不提供FTP访问的情况下安装/更新WordPress插件吗?

use*_*413 544 wordpress

我使用的WordPress只使用我活的服务器上SFTP使用SSH密钥.

我想安装和升级插件,但似乎您需要输入FTP登录才能安装插件.有没有办法通过手动上传文件而不是让WordPress处理整个过程来安装和升级插件?

ste*_*ott 742

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文件的所有权,如果有匹配它可以让你使用安装插件,主题,或更新的"直接"的方法.

现在,如果由于某种原因,你不想依靠自动检查要使用哪个文件系统的方法,你可以定义一个常数,'FS_METHOD'在你的wp-config.php文件,要么是'direct', 'ssh', 'ftpext' or 'ftpsockets',它会使用该方法.请记住,如果将其设置为"直接",但您的Web用户(运行Web服务器的用户名)没有正确的写入权限,则会收到错误.

总之,如果你不希望(或无法)上的wp-content更改权限,以便您的Web服务器写权限,然后添加到您的wp-config.php文件:

define('FS_METHOD', 'direct');
Run Code Online (Sandbox Code Playgroud)

权限解释如下:

  • 我不得不这样做:sudo chown -R www-data wp-content以及授予写权限 (28认同)
  • 这种方法的安全含义是什么? (6认同)
  • `chown -R www-data wordpress/wp-content` 对我不起作用,但 `chown -R www-data wordpress` 对我有用 (6认同)
  • 在线876上使用`getmyuid`在这里可以说是不正确的,因为它返回脚本所有者的UID,而不是脚本执行器.我相信它应该是`posix_getuid`. (5认同)

小智 243

如前所述,perm修复程序都不再起作用.您需要相应地更改perms并将以下内容放入wp-config.php:

define('FS_METHOD', 'direct');
Run Code Online (Sandbox Code Playgroud)

  • 即使我拥有正确的权限,以便Web服务器可以写入插件目录和wp-content目录,此设置也会修复它,以便管理员不会提示更新插件的FTP/SFTP设置.谢谢.工作得很完美. (9认同)
  • 我也必须明确这样做. (5认同)
  • 他们什么时候提出这个要求? (5认同)
  • 请注意确保wp-config.php文件中没有以下内容:define('FS_METHOD','ftpext'); 在这种情况下,放置define('FS_METHOD','direct'); 在文件的底部将无法正常工作.你必须擦除或注释掉define('FS_METHOD','ftpext'); 如果您从另一台需要FTP的服务器迁移,则可能会发生这种情况. (2认同)

suf*_*waz 101

只是想补充一点,你绝不wp-content能将任何文件夹的权限或权限设置为777.

这是我必须要做的:

1)我将wordpress文件夹的所有权(递归地)设置为apache用户,如下所示:

# chown -R apache wordpress/

如果是Ubuntu,Mint或Debian # chgrp -R apache wordpress/

2)我将wordpress文件夹的组所有权(递归地)更改为apache组,如下所示:

# chmod u+wrx wordpress/*

跳过Ubuntu,Mint或Debian的这一步

3)授予所有者对目录的完全权限,如下所示:

wp-content

这就完成了工作.我的755文件夹有wp-content权限,顺便说一句.

TL; DR版本:

# chown -R apache:apache wordpress
# chmod u+wrx wordpress/*
Run Code Online (Sandbox Code Playgroud)

  • 我不同意.它与设置为777不完全相同.如果将权限设置为777,则计算机中的任何用户都将具有写访问权.这本身就是一个问题.虽然你是对的,那apache现在可以改变php文件,这首先是意图(为了更新或安装任何东西).如果有人设法将恶意php文件放入服务器,这是一个全新的问题,并且对不同的用户进行chowning将无济于事. (11认同)
  • 将你的wordpress设置为apache所拥有的就像设置777一样糟糕.结果是一样的:任何php脚本现在都可以改变你的wordpress文件.最好的选择是chown apache:apache临时,安装你的更新并chown回原版或使用ssh/ftp技巧 (10认同)
  • 这是唯一一个帮助我的人!非常感谢,经过多年开发Wordpress网站,这仍然是一个经典的问题! (4认同)
  • 谢谢,它也节省了我的一天,因为我没有FTP权限,但只有root权限. (2认同)
  • 如果您在不寻常的构建下运行 WordPress,请将其粘贴到 PHP 文件中以检查 Apache 的运行身份(例如,ubuntu 是 www-data): <?php echo exec('whoami'); ?> (2认同)

Lam*_*amy 69

  1. wp-config.phpdefine('FS_METHOD', 'direct');
  2. 使服务器可写目录wp-content/,wp-content/plugins/.
  3. 安装插件(将插件目录复制到wp-content/plugins目录中).

适用于版本3.2.1

  • 也适用于4.0版. (4认同)

Str*_*der 49

打开wp-config.php文件并添加以下行:

define('FS_METHOD', 'direct');

这对我有用......谢谢


rav*_*tel 33

只需快速更改wp-config.php即可

define('FS_METHOD','direct');
Run Code Online (Sandbox Code Playgroud)

就是这样,享受你的wordpress更新没有ftp!

替代方法:

有些主机会阻止此方法简化您的WordPress更新.幸运的是,还有另一种方法可以防止这种有害生物提示您输入FTP用户名和密码.

同样,在wp-config.php文件中的MYSQL登录声明之后,添加以下内容:

define("FTP_HOST", "localhost");
define("FTP_USER", "yourftpusername");
define("FTP_PASS", "yourftppassword");
Run Code Online (Sandbox Code Playgroud)


Jac*_*eIO 21

为了能够使用SSH2进行更新和主题上传,您必须生成SSH密钥并安装PHP SSH模块.然后WordPress将检测到您有SSH2可用,并且您将看到在执行上载/升级时显示的其他选项(SSH2).

1.)确保你为debian安装了PHP模块:

sudo apt-get install libssh2-php
Run Code Online (Sandbox Code Playgroud)

2.)生成SSH密钥,添加密码是可选的:

ssh-keygen
cd  ~/.ssh
cp id_rsa.pub authorized_keys
Run Code Online (Sandbox Code Playgroud)

3.)更改权限,以便WordPress可以访问这些键:

cd ~
chmod 755 .ssh
chmod 644 .ssh/*
Run Code Online (Sandbox Code Playgroud)

现在,在进行上传/升级/插件时,您将获得SSH2选项. WP SSH连接

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');
Run Code Online (Sandbox Code Playgroud)

如果你没有设置密码,那么'密码'是可选的ssh-kengen; 然后不要添加它wp-config.php

这解决了我的问题.而且我根本不需要这样做chown.但是我在其他地方看到过这种方法.

参考文献:


Tob*_*len 20

通常,您只需将插件上传到wp-content\plugins目录即可.如果您无法通过SFTP访问此目录,我担心您可能会被卡住.


Rom*_*man 17

您可以通过在命令promt上键入以下命令来轻松获得它

sudo chown -R www-data:www-data your_folder_name
Run Code Online (Sandbox Code Playgroud)

或者将以下代码复制并粘贴到wp-config.php文件中.

define('FS_METHOD', 'direct');
Run Code Online (Sandbox Code Playgroud)

其中"your_folder_name"是此文件夹中安装WordPress的文件夹.


小智 16

在终端中执行以下代码

sudo chown -R www-data /var/www
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请访问 Ubuntu上的Wordpress,无需FTP即可安装插件

  • 让www-data访问您的webdirectory中的所有内容并不是一个好主意 (4认同)

mik*_*eil 15

如果您使用的是Ubuntu,那么对我有用的快速解决方案是为Apache用户提供所有权(默认为www-data),如下所示:

cd your_wordpress_directory
sudo chown -R www-data wp-content
sudo chmod -R 755 wp-content
Run Code Online (Sandbox Code Playgroud)

  • 不要为不需要它的文件授予执行权限. (2认同)

Rah*_*hna 15

将以下代码添加到wp-config

define('FS_METHOD', 'direct');
Run Code Online (Sandbox Code Playgroud)

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


小智 12

define('FS_METHOD','direct');请在wp-config.php中添加


D. *_*ert 11

WordPress 2.7允许您直接上传zip文件(插件页面底部有一个链接) - 无需FTP访问.这是2.7中的一个新功能,它仅适用于插件(不是主题).


Zam*_*man 11

  1. 从改变php_modfastcgicgiSuEXEC启用,对我的作品

不要忘记如果不工作尝试改变

  1. 以root身份将wp-content更改为775

    chmod -R 775 ./wp-content

  2. 添加到wp-config.php

    define('FS_METHOD','direct');

我希望它有效


chr*_*son 9

恢复旧线程,但有一个很棒的新插件称为SSH SFTP更新程序支持,它增加了SFTP功能而无需编辑wp-config.php文件.此外,Wordpress的SFTP实现依赖于一些有些模糊的PHP模块,这些模块通常不在服务器上启用; 这个插件包装了一个不同的PHP SFTP插件,所以你不必在Apache端配置任何东西.

我遇到了很多让SFTP支持工作的问题 - 这个插件解决了所有这些问题并且非常棒.


Raj*_*Raj 9

试试这个

1)在wp-config.php中添加define('FS_METHOD','direct');

2)将"wp-content"目录设置为777以进行可写.

3)现在安装插件.

  • 不要777你的上传目录,这是不安全的,不应该是一个答案! (8认同)
  • 嗨Mohan,感谢大量的FS_METHOD选项.这确实是我想要的.我确实需要说以下内容:除非情况特殊,否则每个人都不需要777.这使得目录世界可读,可写和可执行.这是一个巨大的安全风险.正确的解决方案是找出您的apache用户是谁(www-data,_www或类似).此用户需要对wp-content的读写访问权限或需要对此dir的所有权('sudo chown www-data wp-content'),没有执行权限.我很抱歉有点生硬,但777对网络内容很危险. (6认同)

kay*_*ysa 8

stereointeractive的答案涵盖了所有选项.只想提一下使用FTP的另一种方法.我猜你不允许FTP访问的原因是为了安全.解决这些安全问题的一种方法是运行仅在127.0.0.1上监听的FTP服务器

这允许您从WordPress内部使用FTP,您将能够安装插件,而不会将其暴露给世界其他地方.这也可以应用于其他流行的Web应用程序,如Joomla!和Drupal.这就是我们对BitNami设备云服务器所做的工作,并且运行良好.


小智 8

我还推荐使用SSH SFTP Updater Support插件.刚解决了我所有的问题......特别是关于通过管理员删除插件的问题.只需以通常的方式安装它,下次当您收到WordPress的FTP详细信息提示时,您将有额外的字段供您复制/粘贴您的私人SSH密钥或上传您的PEM文件.

我唯一的问题是让它记住密钥(尝试了两种方法).不喜欢每次我需要删除插件时必须找到并输入它的想法.但至少它现在是一个可靠的解决方案.


Mau*_*tel 8

是的,直接在WordPress中安装插件.

  1. 复制插件文件夹并粘贴到WordPress插件文件夹中.
  2. 转到管理员端(/ test/wp-admin)然后转到插件链接并检查插件的名称.
  3. 激活插件,以便轻松安装插件.

其他选择

  1. 为插件代码创建zip文件.
  2. 转到管理员端(/ test/wp-admin)然后转到插件链接然后点击添加新的然后浏览插件zip文件夹并安装插件然后出来选项激活插件所以这样做激活插件和激活插件.


Sch*_*man 6

我们使用带有SSH的SFTP(在我们的开发服务器和实时服务器上),我尝试过(虽然不太难)使用WordPress上传功能.我同意Toby,将你的插件上传到wp-content/plugins目录,然后从那里激活它们.


Sud*_*dar 6

可以使用SFTP或SSH自动更新WordPress中的插件,但您需要具有ssh2 pecl扩展名.您可以使用以下教程了解如何执行此操作


Zai*_*r06 6

我看到很多人都建议将权限设置为777.我遇到的问题就像2天前一样,我所做的就是把它添加到wp-content

define('FS_METHOD', 'direct');
Run Code Online (Sandbox Code Playgroud)

为插件文件夹设置775权限

这解决了我询问FTP访问登录/密码的问题.

在此之前,我必须通过将.zip文件添加到插件文件夹手动添加插件,然后转到wp-admin/plugins并且必须安装它.


Jav*_*eel 5

尝试执行此操作检查是否对wp-content文件夹授予了正确的权限。

编辑wp-config.php添加以下行

define('FS_METHOD', 'direct');
Run Code Online (Sandbox Code Playgroud)

将“ wp-content”目录更改为www-data以进行完全访问。

现在尝试安装插件。