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

Другие вопросы по тегам