【问题标题】:Wordpress fails to install plugins: Unable to locate WordPress Plugin directoryWordpress 安装插件失败:无法找到 WordPress 插件目录
【发布时间】:2023-04-27 07:20:01
【问题描述】:

我无法在我的 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 需要哪些组和权限才能运行?

更新:我已经修改了插件的权限并将文件夹上传到 777。我还专门为 Wordpress 创建了一个 FTP 用户,并使该用户的主目录与推荐的我的 Wordpress 根文件夹相同 HERE。然后我在 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');

到:

/** 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');

这应该可以消除HERE 中提到的双斜线冲突。

注意 -- 我在上传媒体时也遇到了问题,但通过 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

【问题讨论】:

    标签: wordpress


    【解决方案1】:

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

    您对 wp-config.php 所做的更改需要撤消。

    然后通过 SSH 连接到您的服务器并运行:

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

    如果您的配置不同,请将 apache:apache 替换为不同的 user:group。

    【讨论】:

    • user:group 配置在哪里定义?我假设 user 只是我的 wordpress 用户名,但我不记得为 wordpress 创建了一个组。我对用户组还不太熟悉,所以对此还有些摸不着头脑。
    • 为了澄清这个答案,您的文件/文件夹用户和组设置需要正确 - 这些是您将文件夹/文件上传到服务器时分配的用户和组凭据。使用 Shell 或 Putty 编辑组设置编辑这些权限: sudo chgrp –R [GROUP NAME] /root/directory/here/ 编辑用户设置 sudo chown –R [USER NAME] /root/directory/here/
    • 这对我来说并不明显,但 WordPress 仅在无法访问 (???) 某些文件/目录时才要求 FTP。默认情况下,WordPress 不需要任何 FTP 凭据。因此,如果 WordPress 提示输入 FTP 凭据,我会说您做错了什么(权限错误)或者您的系统管理员不是很好,因为您使用的是预算主机。而不是“apache:apache”,它可能是“www-data:www-data”或其他内容,具体取决于您的 Web 服务器。
    • 我已经将我的 ftp 用户设置为 worpdress 文件夹及其中的所有内容的所有者。但仍然得到Installation failed: Could not create directory. 错误。我该怎么办?
    【解决方案2】:

    好的,我根据上面的建议想通了。这就是我解决此问题的方法:

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

      组添加 ftpusers

    2. 我将我的 wordpress 用户添加到此组。

      usermod -a -G ftpusers wordpressuser

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

      chown -R wordpressuser:ftpusers wordpress

    瞧——我的包已安装。

    【讨论】:

    • 太棒了。谢啦。这是唯一对我有用的解决方案。我尝试了很多。
    • 在网上试过很多东西——这个救了我!
    【解决方案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 凭据终于有所帮助。谢谢!
    【解决方案4】:
    • 首先,确保您的 WP 公共文件夹归 apache 用户所有(取决于您的系统,它应该是 apache 或 www-data):

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

    • 然后编辑 vsftpd.conf 文件

    sudo vim /etc/vsftpd.conf

    • 并确保包含“write_enable”的行未注释且其值设置为“YES”

    ... write_enable=YES ...

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        只需尝试chown R apache:apachewordpress 目录或entire public directory

        【讨论】:

        • 将文件提供给 apache 用户非常不安全
        • @mustafa 我同意这一点。要获得正确的文件权限,请检查以下链接*.com/questions/18352682/…