WordPress安装插件失败:无法找到WordPress插件目录

4

我无法在我的Centos 6 VPS上安装插件。当我尝试安装时,会出现以下情况:

Installing Plugin: BotDetect WordPress CAPTCHA 3.0.Beta1.7

Downloading install package from
[web path to:]botdetect-wp-captcha.zip…
Unpacking the package…
Could not create directory.
Return to Plugin Installer

更新:这似乎与权限有关--我猜测wordpress需要成为某个组的一部分,以便更改文件夹、创建文件等等,但我无法确定应该是哪个组。我没有www-data组--我在某个地方读到过这是一个要求。有人能告诉我WP操作所需的组和权限是什么吗?
更新:我已将插件和上传文件夹的权限chmodded为777。我还专门为WordPress创建了一个FTP用户,并将该用户的主目录设置为与我的WordPress根文件夹相同,就像在这里推荐的那样。然后我更改了wp-config.php文件中的这些行:
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__ . "/"));

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

to:

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__));

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . '/wp-settings.php');

这应该可以解决这里提到的双斜杠冲突问题。

注意--我也遇到了上传媒体的问题,但通过将chmod设置为777来解决了这个问题。

现在当我尝试安装插件时,出现以下错误:

Unable to locate WordPress Plugin directory.<br>
Return to Plugin Installer

更新: 根据建议,我对我的WordPress目录运行了chown -R命令,并将wp-config.php文件恢复到以下内容:
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
        define('ABSPATH', dirname(__FILE__) . "/");

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

我的权限看起来像这样。我仍然有这个问题。
[root@ip-MY_IP/wordpress]# ls -l
total 180
-rw-r--r--  1 apache apache   418 Dec 16 07:07 index.php
-rw-r--r--  1 apache apache 19929 Dec 16 07:07 license.txt
-rw-r--r--  1 apache apache  7183 Dec 16 07:07 readme.html
drwxr-xr-x  2 apache apache  4096 Dec 17 14:57 tmp
-rw-r--r--  1 apache apache  4892 Dec 16 07:07 wp-activate.php
drwxr-xr-x  9 apache apache  4096 Dec 16 07:07 wp-admin
-rw-r--r--  1 apache apache   271 Dec 16 07:07 wp-blog-header.php
-rw-r--r--  1 apache apache  4795 Dec 16 07:07 wp-comments-post.php
-rw-r--r--  1 apache apache  3087 Dec 16 07:07 wp-config-sample.php
-rw-r--r--  1 apache apache  3124 Dec 19 06:10 wp-config.php
drwxr-xr-x  6 apache apache  4096 Dec 18 21:03 wp-content
-rw-r--r--  1 apache apache  2932 Dec 16 07:07 wp-cron.php
drwxr-xr-x 12 apache apache  4096 Dec 16 07:07 wp-includes
-rw-r--r--  1 apache apache  2380 Dec 16 07:07 wp-links-opml.php
-rw-r--r--  1 apache apache  2359 Dec 16 07:07 wp-load.php
-rw-r--r--  1 apache apache 31909 Dec 16 07:07 wp-login.php
-rw-r--r--  1 apache apache  8235 Dec 16 07:07 wp-mail.php
-rw-r--r--  1 apache apache 10880 Dec 16 07:07 wp-settings.php
-rw-r--r--  1 apache apache 25665 Dec 16 07:07 wp-signup.php
-rw-r--r--  1 apache apache  4026 Dec 16 07:07 wp-trackback.php
-rw-r--r--  1 apache apache  3015 Dec 16 07:07 xmlrpc.php
7个回答

13

你遇到的问题与文件所有权有关。该文件夹的所有者是与 web 服务器不同的用户,因此 WP 无法为你尝试下载的插件创建目录。

你对 wp-config.php 所做的更改需要被撤销。

然后通过 SSH 登录到你的服务器并运行:

sudo chown -R apache:apache /path/to/wordpress/dir

如果您的配置不同,请使用其他用户:组替换apache:apache。


用户组配置在哪里定义?我假设用户只是我的WordPress用户名,但我不记得为WordPress创建过组。我对用户组还不太熟悉,所以有点摸不着头脑。 - user1780242
为了澄清这个答案,你的文件/文件夹用户和组设置需要正确——这些是在上传文件夹/文件到服务器时分配的用户和组凭据。使用Shell或Putty编辑这些权限。编辑组设置: sudo chgrp -R [组名] /root/directory/here/编辑用户设置: sudo chown -R [用户名] /root/directory/here/ - Jonathan
一开始我并没有意识到,但是WordPress只会在无法访问某些文件/目录时才要求FTP。默认情况下,WordPress不需要任何FTP凭据。所以如果WordPress提示输入FTP凭据,那么我想你要么做错了某些事情(权限不正确),要么你的系统管理员不是很好,因为你在使用预算主机。而不是“apache:apache”,它可能是“www-data:www-data”或其他一些内容,这取决于你的Web服务器。 - PJ Brunet
我已将我的ftp用户设置为worpdress文件夹及其内部所有内容的所有者。但仍然遇到“安装失败:无法创建目录。”错误。我该怎么办? - alramdein

5

好的,根据以上建议,我解决了这个问题。以下是解决方法:

  1. 我创建了一个名为ftpusers的组。

    groupadd ftpusers

  2. 我将我的WordPress用户添加到了这个组中。

    usermod -a -G ftpusers wordpressuser

  3. 我递归地将WordPress文件夹的所有权更改为我的WordPress用户:组。

    chown -R wordpressuser:ftpusers wordpress

完成!我的包已安装。


太好了,谢谢你。这是唯一一个对我有效的解决方案。我尝试了很多其他方法。 - Ronny Sherer
尝试了很多互联网上的方法 - 这个救了我! - Eduardo Almeida

3

在wp-config.php文件中设置FTP访问是有帮助的,就像这篇文章所描述的那样。

https://digwp.com/2010/11/ftp-in-wpconfig/

define('FS_METHOD', 'ftpext');
define('FTP_BASE', '/yourftpfolder/');
define('FTP_USER', 'youruser');
define('FTP_PASS', 'yourpassword');
define('FTP_HOST', 'yourhost.com');
define('FTP_SSL', false);

这个!我在一个共享服务器上,无法执行“sudo chown”巫术。提供我的FTP凭据最终帮了我大忙。谢谢! - robro

1
在我的情况下,wp-content目录只有一个plugins.old目录。我创建了一个plugins目录并运行了“chmod wwwrun:www plugins/”来安装插件。运行opensuse leap 42.2。

1
请确保您的WP公共文件夹归属于Apache用户(根据您的系统,它应该是Apache或www-data):
sudo chown -R apache:apache /path/to/wordpress
然后编辑vsftpd.conf文件,并确保包含“write_enable”的行已取消注释,并且其值设置为“YES”:
sudo vim /etc/vsftpd.conf
... write_enable=YES ...

1

在从Bitbucket克隆的新WordPress项目中,我总是遇到这样的问题。
解决问题的方法是在这里和其他地方找到的一组不同的解决方案,因此我将此答案发布为我发现的内容的摘要:
注意:我正在本地开发,这不是您应该在服务器上执行的操作!在克隆主题内容后,我在WordPress根文件夹上运行这些代码。

  1. 配置git以不跟踪所有权更改(否则,它将跟踪所有项目文件的更改)
    git config --global core.fileMode false
    -- 如果您只想在当前项目中进行此配置,则可以省略“--global”。
  2. 将所有权更改为daemon组(我在本地没有www-data组或用户):
    sudo chown daemon:<my-user> -R *
  3. 更改文件和文件夹权限:
  • 文件:
    sudo find . -type f -exec chmod 664 {} +
  • 文件夹:
    sudo find . -type d -exec chmod 775 {} +
  • 仅限 wp-config:
    sudo chmod 660 wp-config.php

现在它正常工作了,但我仍然不知道为什么这个问题首先出现。
也许是因为我正在运行 Linux 并克隆在 Windows 中创建的代码...也可能不是,但我已经遇到了问题并不得不进行配置。


-1

尝试使用chown R apache:apache命令来更改wordpress目录或整个公共目录的所有者为apache


将文件交给Apache用户非常不安全。 - mustafa
@mustafa 我同意。为了拥有正确的文件权限,请查看以下链接 https://dev59.com/GWMl5IYBdhLWcg3wgnIE - Ashok G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接