WordPress 3.8:无法找到WordPress内容目录(wp-content)。

6
我原本已经设置好了服务器,可以通过WordPress提供的漂亮按钮更新插件、主题和核心。然而,在升级到3.8之后,我无法更新任何内容。尝试通过WordPress的FTP上传插件/更新时,它无法通过localhost连接。127.0.0.1和公共IP都返回“无法找到WordPress内容目录(wp-content)”,经过很长时间后建议超时或多个超时。环境:WP 3.8(多站点,子目录),Ubuntu 12.04服务器,vsftpd(以便我可以使用FTP用户)。很久以前(当我不知道自己在做什么时),我将整个/var/www/目录权限更改为gabe:gabe。此后,我尝试将wp-content目录更改为gabe:www-data和www-data:www-data,但没有成功。我还尝试使用chmod 777 wp-content,同样也没有成功。
我已经谷歌了,绝大部分解决方案都与权限有关。但是,如上所述,我已尝试将目录的所有者和权限更改为777。因此,我认为权限已经走到了尽头。
最初,我认为iptables在某种程度上会妨碍。但是,我关闭/清空了表格,但没有成功。因此,我不认为iptables是罪魁祸首。
其他的谷歌解决方案涉及向wp-config.php文件添加一些代码。然而,其中一个完全破坏了网站。另一个没有效果。
Apache和域的日志没有显示任何内容。它们不是空的,但没有一个单独的引用到wp-content或我能想到的任何相关内容。ftp日志显示通过127.0.0.1成功建立了连接。
所以,我现在已经用完了我的所有技巧。
-------------编辑:我对wp-config进行的更改------------- 根据http://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content的建议,我更改了wp-config.php,包括:
if(is_admin()) {
    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
    define( 'FS_CHMOD_DIR', 0751 );
}

这是在4年前WordPress 2.8中针对同一问题提出的解决方案。添加这些行后,网站无法加载,并且由于帖子/解决方案的年龄,我将它们删除,并没有进一步研究为什么网站无法加载。我认为它调用了在WP中不存在的某些功能。
我添加到wp-config.php的第二段代码是:
putenv('TMPDIR='. ABSPATH .'tmp');
define('WP_TEMP_DIR', ABSPATH . 'tmp');

根据http://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content?replies=15的建议,我进行了操作。虽然这并没有破坏网站,但也没有解决问题,所以我将其移除了。


你在wp-config文件中做了哪些更改?有没有涉及到 "define( 'WP_CONTENT_DIR', .... " 和/或 define( 'WP_PLUGIN_DIR', .... " ? - Evan Volgas
@evanv 我已经编辑了我的问题,展示了我添加到 wp-config 的代码。 - Gabe Spradlin
感谢添加。您的WP内容目录在wp-config中定义了吗?WP插件目录呢? - Evan Volgas
wp-config中没有定义内容或插件目录。但是,我知道如果我通过FTP将插件或主题放入正确的目录中,WordPress会找到插件/主题并允许我激活它。因此,在那个时间点上,它知道正确的目录在哪里。 - Gabe Spradlin
5个回答

39

将这一行添加到我的wp-config.php文件中,它就可以运行了。

define('FS_METHOD', 'direct');

我在 Ubuntu 服务器上有一个本地开发环境。


在我的情况下,除了在文件中添加此行并删除原始行[define('FS_METHOD', 'ftpext');]之外,我还必须使用“chmod -R 777 wp-content /”更改WP-Content文件夹的权限。 - NicolasZ
谢谢,你救了我的命 :) - Zoom Nguyễn
@NicolasZ 777是一个极其危险的设置。你可以找到更好的解决方案。 - mustafa

3
试试这个 :)
//* FTP Settings **/
/** wp-content path */
define('FS_METHOD', 'ftpext');
define('FTP_BASE', '/');
define('FTP_CONTENT_DIR', '/wp-content/');
define('FTP_PLUGIN_DIR', '/wp-content/plugins/');
define('FTP_USER', 'testdomain4.com');
define('FTP_PASS', 'XXXXXXXXXXXX');
define('FTP_HOST', 'ftp.enterpriseit.us');
define('FTP_SSL', false);

请参见http://codex.wordpress.org/Editing_wp-config.php

3

尝试将这行代码添加到您的wp-config.php中,这对我有效:

define('FS_METHOD', 'ftpsockets');
define('FTP_BASE', 'xxx');

将xxx替换为您的FTP主目录路径,例如/opt/htdocs/wordpress。

谢谢您的回复,不过该网站已经升级并迁移到新服务器上了。这个问题已经不存在了,我也没有它来测试解决方案了。 - Gabe Spradlin

0

需要检查的要点(如果您还没有): 1. 检查是否能够使用FTP客户端登录。 2. 当FTP用户登录时,是否更改文件夹为WP文件夹。

以下是一些可能帮助您交叉检查设置的要点:

您可能需要创建一个FTP用户,其主目录是您的WP安装。

当WordPress登录到FTP时,它应该是WP安装的主目录。

请检查此URL,这将有所帮助。

http://blog.noizeramp.com/2008/09/10/wordpress-unable-to-locate-wordpress-plugin-directory/

如果您不确定如何创建用户或分配主文件夹,有许多网站可以解释。

以下是其中之一:

http://www.cyberciti.biz/faq/howto-change-default-home-directory/

创建用户后,请按照以下步骤更改 wp-config.php。
define( 'FTP_USER', 'username' );
define( 'FTP_PASS', 'password' );
define( 'FTP_HOST', 'ftp.example.org:21' );

祝你好运!


0
在基于Debian的系统上,通过Debian软件包安装WordPress后,我不得不将/var/lib/wordpress/wp-content/目录中的所有者和组从“root”更改为“www-data”。例如。
sudo chown www-data:www-data /var/lib/wordpress/wp-content/ -R

为了让 Web 服务器可写入目录。


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