WordPress 3.9多站点数据库连接错误


WordPress 3.9 Multisite db connection error

我安装了ZendFW应用程序和WPMU。Zend应用程序的管理员有一个界面,他们可以在其中创建一个新的MU站点。

我包括了wp-load.php,然后称为wpmu_create_blog等等…

一旦我将WP更新到3.9,我在建立数据库连接时出错。

这个测试代码在3.8下可以正常工作,但在尝试WP 3.9时会出现db错误。

blog38是WP 3.8

<?php 
include "../blog38/wp-load.php";
global $wpdb;
echo "<pre>";
var_dump($wpdb->tables());
?>

blog39是WP 3.9

<?php 
include "../blog39/wp-load.php";
global $wpdb;
echo "<pre>";
var_dump($wpdb->tables());
?>

有人知道问题出在哪里吗?如何解决此连接错误?

我把它发布在WordPress讨论上,并提交了一张票。问题出在ms-setting.php文件中,他们用新的方式设置$path和$current_site->path变量。在WP 3.8.3中,他们$current_site->path = $path = PATH_CURRENT_SITE;

在WP 3.9中,他们设置了

$current_site->path = PATH_CURRENT_SITE;

$path由$_SERVER['REQUEST_URI']变量确定。因此,当您在应用程序中加载wp-load.php文件时(wordpress在子目录中),您有$path和$current_site->path变量不同,这最终导致没有博客定义的情况,从而导致数据库连接错误。

当前的解决方法是在加载wp-load.php 之前覆盖$_SERVER['REQUEST_URI'] = '/blog/';

更多信息可以找到:

http://wordpress.org/support/topic/wordpress-39-multisite-db-connection-errorhttps://core.trac.wordpress.org/ticket/27999