WordPress 3.9 Ошибка подключения к мультисайтовой базе данных
У меня есть приложение ZendFW и установленный WPMU. Администраторы в приложении Zend имеют интерфейс, с помощью которого они могут создать новый сайт MU.
я включен wp-load.php
а потом позвонил wpmu_create_blog
и так далее...
Как только я обновил WP до 3.9, я получил ошибку при установлении соединения с базой данных.
Этот тестовый код работает нормально с 3.8, но выдает ошибку db при попытке WP 3.9.
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());
?>
Кто-нибудь знает в чем проблема? Как решить эту ошибку подключения?
1 ответ
Я разместил это на обсуждении 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, которая заканчивается ни в одном случае, не определенном в блоге, что приводит к ошибке подключения к базе данных.
Текущее решение - переопределить $_SERVER['REQUEST_URI'] = '/blog/';
перед загрузкой wp-load.php
Более подробную информацию можно найти:
http://wordpress.org/support/topic/wordpress-39-multisite-db-connection-error https://core.trac.wordpress.org/ticket/27999