Answers:
如果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进行比较,如果匹配,则将允许您使用“直接”方法安装插件,主题或更新。
现在,如果由于某种原因您不想依靠自动检查要使用哪种文件系统方法,则可以'FS_METHOD'
在wp-config.php
文件中定义一个常量,即一个常量,'direct', 'ssh', 'ftpext' or 'ftpsockets'
它将使用该方法。请记住,如果将其设置为“ direct”,但是您的Web用户(运行Web服务器的用户名)没有适当的写入权限,则会收到错误消息。
总之,如果您不想(或不能)更改wp-content的权限,以使您的Web服务器具有写权限,则可以将其添加到wp-config.php文件中:
define('FS_METHOD', 'direct');
权限说明如下:
getmyuid
876行的使用在这里可能是错误的,因为它返回脚本所有者而不是脚本执行者的UID。我相信应该posix_getuid
。
print_r(posix_getpwuid(posix_geteuid()));
您可以在wp-config
文件中添加代码。
chown -R www-data wordpress/wp-content
没为我工作,但为我chown -R www-data wordpress
做了
如前所述,烫发修复程序无法正常工作。您需要相应地更改烫发并将以下内容放入您的wp-config.php
:
define('FS_METHOD', 'direct');
只是想补充一点,您绝不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; 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');
就是这样,不用ftp就可以享受您的wordpress更新!
替代方法:
那里有主机,它将阻止此方法简化您的WordPress更新。幸运的是,还有另一种方法可以防止这种有害生物提示您输入FTP用户名和密码。
同样,在wp-config.php文件中的MYSQL登录声明之后,添加以下内容:
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密钥,添加密码是可选的:
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
define('FS_METHOD', 'direct');
FS_METHOD强制使用文件系统方法。它只能是direct,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
如果您使用的是Ubuntu,那么对我有用的快速解决方案是将所有权授予Apache用户(默认为www-data),如下所示:
cd your_wordpress_directory
sudo chown -R www-data wp-content
sudo chmod -R 755 wp-content
WordPress 2.7允许您直接上传一个zip文件(插件页面底部有一个链接)-无需FTP访问。这是2.7中的新功能,仅适用于插件(尚不适用于主题)。
恢复了旧线程,但是有一个很棒的新插件叫做SSH SFTP Updater Support,它增加了SFTP功能,而无需编辑wp-config.php
文件。另外,Wordpress的SFTP实现依赖于一些晦涩难懂的PHP模块,这些模块通常未在服务器上启用。该插件打包了一个不同的PHP SFTP插件,因此您无需在Apache端进行任何配置。
让SFTP支持正常工作时遇到了很多问题-这个插件解决了所有问题,真是太棒了。
尝试这个
1)在wp-config.php
添加define('FS_METHOD', 'direct');
2)将wp-content
目录设置777
为可写。
3)现在安装插件。
我还建议使用SSH SFTP Updater支持插件。刚刚也解决了我所有的问题...尤其是在通过管理员删除插件方面。只需以通常的方式安装它,下次WordPress提示您输入FTP详细信息时,将有其他字段可用于复制/粘贴您的私密SSH密钥或上载PEM文件。
我唯一的问题是让它记住密钥(尝试了两种方法)。不喜欢每次我需要删除插件时都必须查找并输入它的想法。但是至少目前这是一个固定的解决方案。
我看到很多人建议将权限设置为777。我有类似2天前一样的问题,我所做的只是将其添加到wp-content
define('FS_METHOD', 'direct');
和
将插件文件夹的权限设置为775
这解决了我询问FTP访问登录名/密码的问题。
在此之前,我必须通过将.zip文件添加到插件文件夹中来手动添加插件,然后转到wp-admin/plugins
并进行安装。
方法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");
Note: put this after define( 'DB_CHARSET', 'utf8mb4' ).
设置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安全问题。
这是一个简单的方法。
执行以下命令。
这将为Apache启用mod_rewrite模块
$sudo a2enmod rewrite
此命令会将文件夹的所有者更改为www-data
$sudo chown -R www-data [Wordpress Folder Location]
执行完上述命令后,您可以安装任何不带FTP的主题。
sudo chown -R www-data [Wordpress Folder Location]
当您没有权限在/ 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插件的错误消息。
使用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版本的功能可能已降级
如果满足上述要求,请执行以下步骤:参考URL: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中可用的那些插件
wp-content/plugins/
然后从wp仪表板转到“插件”标签并启用它。