[Ungelöst] Wordpress Multisite einrichten

ItsFun

Urgestein
Thread Starter
Mitglied seit
04.05.2005
Beiträge
2.642
Ort
Weimar | 🇩🇪
Mahlzeit! Ich habe schon länger auf einem virtuellen Debian Server mit php 7.3 eine Wordpress Seite laufen. Die Seite ist nur vom Intranet aus erreichbar und besitzt das Plugin "Password Protected" für eine Pre-Authentication. Das heißt, man muss erst ein Master-Passwort eingeben, damit überhaupt Content angezeigt wird. Damit verriegle ich die Seite im Intranet vor ungewollten Zugriff. Nun habe ich eine Anforderung, die ich nur mit einer zweiten Wordpress Seite realisieren kann, da die Seite von allen Intranet Usern erreichbar sein soll. Dazu habe ich eine Multisite einrichtet.

Ich habe die vorhanden Seite unter /var/www/html/ nochmal in einen Unterordner /var/www/html/Site1 verschoben und im Dashboard die Pfade angepasst. Mit einem Plugin "Search and Replace" habe ich die Pfade in der Datenbank entsprechend angepasst. Die Seite war daraufhin wieder vollständig Aufrufbar und Nutzbar. Ich habe nun die wp-config.php angepasst (mit "define('MULTISITE', true);"), Multisite aktiviert und nochmal die wp-config.php und .htaccess vollständig angepasst. Damit die vorhande Seite lief, musste ich noch Permalinks anpassen. Nun läuft Site1 aus dem Unterordner mit aktivierten Multisite fehlerfrei.

Und wie gehts jetzt weiter? Ich finde kaum Dokus dazu!

Ich habe im Dashboard der Netzwerkverwaltung eine neue Site erstellt. Diese hat den gleichen Domain-Alias mit dem Namen Site2 bekommen. Quasi habe ich theoretisch nun zwei Seiten...


In der Theorie schön, doch wird dabei auf dem Server physisch nichts angelegt. Ich habe daraufhin den Ordner Site2 händisch angelegt, eine jungfräuliche WP-Installation aus dem Netz geladen und in den Ordner kopiert.
Das Aufrufen dieser Seite über http://domain.local/Site2 funktioniert.

Der Super-Administrator ist für beide Sites berechtigt. Versuche ich mich allerdings mit diesem User an Site2 anzumelden, wird die Login-Maske einfach nur zurückgesetzt, ohne Fehlermeldung. Gebe ich einen erfundenen User dort ein, kommt eine Fehlermeldung, das der User nicht exisiert.

Über http://domain.local/Site2/wp-admin/install.php bekomme ich nur die Meldung "WordPress ist bereits installiert. Für eine Neuinstallation lösche bitte zuerst deine alten Datenbank-Tabellen."

Ich brauche Expertise! :wink:
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Erstelle ich Site2 unter http://domain.local/Site1/Site2 und verschiebe den Ordner dahin, erhalte ich beim Zugriff auf Dashboard oder Seite immer die Meldung "Eine oder mehrere Datenbank-Tabellen sind nicht erreichbar. Die Datenbank muss ggf. repariert werden.". Die install.php ist nicht aufrufbar. Ich checks nicht... Sämtliche Dokus im Netz enden nach der Konfiguration der Site2 in der Netzwerkverwaltung. Wie der Inhalt dahin kommt, steht irgendwie nirgends. :unsure:
 
Das gleiche hier. Neuinstallation auf einem frisch aufgesetzten Debian Buster Server. Wenn man eine wp-config.php von Hand anlegt und WP_DEBUG definiert, kommt im Apache error log das Folgende:

[Fri Oct 30 12:42:50.530671 2020] [fcgid:warn] [pid 10213] [client ---:55607] mod_fcgid: stderr: PHP Fatal error: Uncaught Error: Call to undefined function language_attributes() in /var/www/clients/xxx/web/wp-admin/maint/repair.php:15, referer: /wp-admin/setup-config.php
[Fri Oct 30 12:42:50.530737 2020] [fcgid:warn] [pid 10213] [client ---:55607] mod_fcgid: stderr: Stack trace:, referer: /wp-admin/setup-config.php
[Fri Oct 30 12:42:50.530744 2020] [fcgid:warn] [pid 10213] [client ---:55607] mod_fcgid: stderr: #0 {main}, referer: /wp-admin/setup-config.php
[Fri Oct 30 12:42:50.530750 2020] [fcgid:warn] [pid 10213] [client ---:55607] mod_fcgid: stderr: thrown in /var/www/clients/xxx/web/wp-admin/maint/repair.php on line 15, referer: /wp-admin/setup-config.php

Aber weiter geht es auch nicht, keine weitere Fehlermeldung im Browser oder sonst wo. Ohne Debug kommt schlicht gar nichts.

PHP Version ist:
PHP 7.3.19-1~deb10u1 (cli) (built: Jul 5 2020 06:46:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.19, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.19-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies

Eine oder mehrere Datenbank-Tabellen sind nicht erreichbar. Die Datenbank muss ggf. repariert werden.

Natürlich bringt auch die Repair Option nichts, ist ja ne Neuinstalltion ohne wp-config.php.

Ausversehen ne Alpha released?
 
Zuletzt bearbeitet:
Da ich keine Zeit habe, mich mit dem Code auseinander zu setzen, hier ein Workaround:

In der Datei wp-includes/functions.php, Zeile 1710 eine Existenzprüfung für die Datei wp-config.php einfügen und ein return false abwerfen, wenn sie nicht existiert.

Damit kann die Installation dann gestartet werden. Verstehe zwar nicht ganz, warum man die Datenbank prüfen will, obwohl noch keine Config da ist, aber nun gut...

Werde dann wohl auf eine ältere Version wechseln, wer weiß, was sonst noch Schrott ist.

PHP:
/**
 * Determines whether WordPress is already installed.
 *
 * The cache will be checked first. If you have a cache plugin, which saves
 * the cache values, then this will work. If you use the default WordPress
 * cache, and the database goes away, then you might have problems.
 *
 * Checks for the 'siteurl' option for whether WordPress is installed.
 *
 * For more information on this and similar theme functions, check out
 * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
 * Conditional Tags} article in the Theme Developer Handbook.
 *
 * @since 2.1.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @return bool Whether the site is already installed.
 */
function is_blog_installed() {
        global $wpdb;

        /*
         * Check, if the wp-config.php exists (if not, it is simply not installed)
         */
        if ( ! file_exists( __DIR__.'/../wp-config.php' ) ) {
                return false;
        }

        /*
         * Check cache first. If options table goes away and we have true
         * cached, oh well.
         */
        if ( wp_cache_get( 'is_blog_installed' ) ) {
                return true;
        }
 
Erstelle ich Site2 unter http://domain.local/Site1/Site2 und verschiebe den Ordner dahin, erhalte ich beim Zugriff auf Dashboard oder Seite immer die Meldung "Eine oder mehrere Datenbank-Tabellen sind nicht erreichbar. Die Datenbank muss ggf. repariert werden.". Die install.php ist nicht aufrufbar. Ich checks nicht... Sämtliche Dokus im Netz enden nach der Konfiguration der Site2 in der Netzwerkverwaltung. Wie der Inhalt dahin kommt, steht irgendwie nirgends. :unsure:

Das Problem war auf ein Bug innerhalb der Installationsroutine der 5.5.2 Version zurückzuführen, wurde aber Gestern mit der 5.5.3 behoben.
 
Danke! Probiere ich morgen!
 
Wäre schön gewesen, aber ist leider nach wie vor so. Konnte nicht warten und habe es eben probiert, Wordpress 5.5.3 installiert .Aber wenn ich eine neue Website erstelle und das Dashboard aufrufe, erhalte ich vom Server die Fehlermeldung "Not Found".
 
... erhalte ich beim Zugriff auf Dashboard oder Seite immer die Meldung "Eine oder mehrere Datenbank-Tabellen sind nicht erreichbar. Die Datenbank muss ggf. repariert werden.". ...

Der Fix in der 5.5.3 ist hierauf bezogen, hätte ja sein können das der Rest deines Problems evtl. auch darauf zurückzuführen ist, schade aber dann weiß ich auch nicht weiter.
 
Hast Du mal nen Blick in deine .htaccess geworfen (sofern existent)? Kann es sein, dass durch die htaccess die Installation am falschen Ort vermutet wird?
 
Code:
# BEGIN WordPress
# Die Anweisungen (Zeilen) zwischen „BEGIN WordPress“ und „END WordPress“ sind
# dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
# Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /Site1/
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>

# END WordPress

die liegt unter /var/www/html/Site1

und die Folgende liegt unter /var/www/html
Code:
# BEGIN WordPress
# Die Anweisungen (Zeilen) zwischen „BEGIN WordPress“ und „END WordPress“ sind
# dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
# Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /itwiki/index.php [L]
</IfModule>

# END WordPress
 
Welche Vorteile versprichst du dir denn von der Multisite? Meist ist es einfacher und besser Wartbar, wenn man WordPress einfach zwei mal installiert
 
Und wie mache ich das auf einem lokalen Server? Ich habe mir mein bisheriges Wissen über CMS und Webdesign komplett selber angeeignet. An der Stelle klemmt es. Ich dachte Mutlisite wäre die eleganteste Methode.
 
Ok, ich vermute, dass die htaccess in /var/www/html diejenige in /var/www/html/site1 überschreibt oder die in site1 gar nicht gelesen wird. Prüf mal die Apache Config (falls verwendet).
 
Und wie mache ich das auf einem lokalen Server? Ich habe mir mein bisheriges Wissen über CMS und Webdesign komplett selber angeeignet. An der Stelle klemmt es. Ich dachte Mutlisite wäre die eleganteste Methode.
Naja du benötigst eben eine zusätzliche Datenbank (einfache Lösung) oder eben ein anderes Prefix für die Tabelken (etwas kompliziertere Lösung).

Die Struktur die du bereits mit den Ordnern angelegt hast kannst du beibehalten. Dann einfach die WordPress Dateien in beide Ordner kopieren und zwei mal völlig voneinander getrennt installieren/nutzen
 
Ok, ich vermute, dass die htaccess in /var/www/html diejenige in /var/www/html/site1 überschreibt oder die in site1 gar nicht gelesen wird. Prüf mal die Apache Config (falls verwendet).
Ist leider nicht das Problem. Wahrscheinlich habe ich die Datei in vergangenen Versuchen mal erstellt, eben wieder gelöscht, Problem besteht weiterhin.

Naja du benötigst eben eine zusätzliche Datenbank (einfache Lösung) oder eben ein anderes Prefix für die Tabelken (etwas kompliziertere Lösung).

Die Struktur die du bereits mit den Ordnern angelegt hast kannst du beibehalten. Dann einfach die WordPress Dateien in beide Ordner kopieren und zwei mal völlig voneinander getrennt installieren/nutzen
Das ist mir klar. Aktuell beginnen alle Tabellen mit WP_ ... allerdings komme ich nicht ins Dashboard von Site2 oder irgendwohin, wo ich da ggf. etwas konfigurieren kann. Eine zusätzliche Datenbank würde ich ggf. auch gern anlegen. Doch es fehlt an der Möglichkeit diese irgendwo zu hinterlegen oder zu erstellen.
 
Hast Du mal das Debug in der wp-config aktiviert? Es wäre wichtig zu wissen, ob die index.php in site1 auch ausgeführt wird oder etwas anderes den 404 abwirft.
 
Ich habe jetzt
Code:
define( 'WP_DEBUG', true );
eingestellt, das stand auf false. Wie gehts jetzt weiter?
 
in site1 ausführen und gucken was kommt. wenn weiterhin ein not found kommt, dann die apache logs prüfen.
 
Er protokolliert dort einen Fehler, der mit meinem Problem nichts zu tun hat. (Größenbeschränken von Uploads sind an zwei Stellen verschieden definiert). Doch wenn ich Site2 aufrufe, wird nichts protokolliert.
Ich werde an der Stelle morgen oder Montag weiter machen. Aktuell habe ich das Verzeichnis Site2 mit einer jungfräulichen WP-Installation gelöscht. (Laut eine Doku wird das nicht benötigt, aber wer weis). Ich teste das nochmal in einer anderen Konstellation und gebe Rückmeldung. Danke erstmal!
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh