Warten auf localhost

Problem bei XAMPP – Warten auf localhost…

Bei einer Testinstallation von WordPress auf dem eigenen Computer mittels XAMPP stellten sich unerwartet Probleme ein: Beim Aufruf der WP-Installation (localhost/wordpress/wp-admin/install.php) kam entweder die Fehlermeldung „Error establishing a database connection“, oder es kamen Fehlermeldungen während des unendlich lange dauernden Installationsprozesses, Hinweise, dass die Datenbank repariert werden müsse, nur halb aufgebaute Seiten… und immer die Einblendung in der Statusleiste des Browsers: Warten auf localhost…

Von der berühmten 5-Minuten-Installation konnte keine Rede sein. Fünf Stunden hat es gedauert, bis ich endlich den Fehler finden konnte. Dabei hatte ich mich eigentlich längst von XAMPP verabschiedet, weil sich vor einigen Jahren bereits Probleme mit der Geschwindigkeit eingestellt hatten, die ich damals nicht ergründen konnte. Für die Einführung „WordPress testen: Installation auf der eigenen Festplatte“ wollte ich aber die dort beschriebenen Installationsschritte mit aktuellen Versionen von XAMPP und WordPress durchspielen – um wieder auf diese elenden Timingprobleme zu stoßen.

Um’s kurz zu machen: Die Lösung ist ein simpler Eintrag in der wp-config.php von WordPress:

define('DB_HOST', '127.0.0.1:3306');

Viele, die sich mit dem Sinn dieses Eintrags auskennen, werden nun die Nase rümpfen. Und genau diese Haltung findet sich auch in zahlreichen Postings zu diesem Thema im Internet, was eine Lösung des Problems, das seit Jahren bei vielen Windows- und auch Mac-Usern immer wieder auftaucht, behinderte. Dabei ist die Skepsis auf den ersten Blick berechtigt:

Bei einer WordPress-Installation werden in der wp-config.php üblicherweise nur drei Eintragungen vorgenommen: der Name der Datenbank, in der WordPress die Daten ablegen soll, außerdem der Name des Users, also des Zugriffsberechtigten der Datenbank, und das zugehörige Passwort.

/**  Ersetze database_name_here mit dem Namen der Datenbank, die du verwenden möchtest. */
define('DB_NAME', 'db1');

/** Ersetze username_here mit deinem MySQL-Datenbank-Benutzernamen */
define('DB_USER', 'db1');

/** Ersetze password_here mit deinem MySQL-Passwort */
define('DB_PASSWORD', 'meinfreundisstkeinesauerlaender');

/** Ersetze localhost mit der MySQL-Serveradresse */
define('DB_HOST', 'localhost');

Der Eintrag für DB_HOST wird in der Regel nicht geändert. Dort localhost gegen 127.0.0.1:3306 auszutauschen, ist scheinbar überflüssig, denn der ‚well known‘ Hostname localhost sagt ja nichts anderes, als dass die Host-IP 127.0.0.1 über den Standard-Port 3306 benutzt werden soll. Allerdings: Das Betriebssystem muss WordPress diesen Zusammenhang mitteilen, und zwar jedesmal, wenn WordPress auf die Datenbank zugreifen will. Und genau hier liegt der Hase begraben oder der Hund im Pfeffer oder so… egal. Verwirrenderweise tritt das Problem nur bei manchen Betriebssystemen auf, vor allem bei Windows 7 und eventuell auch Windows 8, vermutlich inzwischen nicht mehr bei neueren Macs mit Linuxgrundlage.

In manchen Windows-Konstellationen jedenfalls wird wohl ein Domain-Name-Service bemüht, offenbar in Form eines externen DNS-Lookups, um den Namen localhost in die IP aufzulösen. Windows sucht also lustig im Internet herum, was denn wohl localhost bedeuten könne. Und das kann dauern (vor allem, wenn gar keine Internetverbindung aufgebaut ist, weil man ja XAMPP aufgesetzt hat, um lokal zu arbeiten). Eigentlich sollte hierfür eine interne Tabelle ausreichen, die Datei C:\Windows\System32\drivers\etc\hosts scheint hierfür vorgesehen zu sein. Bei mir allerdings (win 7, 64bit) sind die entsprechenden Einträge dort wegkommentiert, also wirkungslos.

Fazit: Erst mit der geringfügigen Änderung in der Konfigurationsdatei von WordPress war mein PC überhaupt in der Lage, die Installation fehlerlos abzuschließen. Während sie vorher mit der Meldung „Error establishing a database connection“ gar nicht erst startete oder nur unvollständig abschloss (entweder waren nicht alle Tabellen angelegt oder diese nicht komplett befüllt worden), lief sie nach der DB_HOST-Konkretisierung so schnell und problemlos durch, wie ich das lokal vom UniServer und auch durch Internet-Installationen kenne.

Nach der Installation unter XAMPP funktioniert der Seitenaufbau nun übrigens auch mit der Voreinstellung DB_Host=localhost. Das Laden einer Testseite benötigt dann aber 22 Sekunden! Stelle ich wieder um auf meine Lösung, dauert der Seitenaufbau weniger als 500ms. Diesen kleinen Test hab ich dann auch noch bei einer WP-Installation unter dem Uniform Server gemacht, bei dem die Installation auch mit der localhost-Einstellung problemlos durchläuft: Seitenaufbau per localhost: 1,3 Sekunden, mit 127.0.0.1:3306 nur noch 0,8 Sekunden.

15 Gedanken zu „Problem bei XAMPP – Warten auf localhost…

  1. Hallo,

    habe das Problem, dass XAMPP sehr langsam die Seiten lädt (Shopsystem „Shopware 4“)
    Ich habe zwar Deine Artikel dazu gelesen, aber das Problem besteht weiterhin.
    Vielleicht kannst Du mir ja helfen.

    Vielen Dank und mit freundlichen Grüßen
    Max

    1. Hi Max,

      ich hab zwar vor einiger Zeit selbst einen Shopware-Shop offline vorbereitet und damals tatsächlich auch XAMPP genutzt – daher kenne ich das Problem -, eine Lösung dafür habe ich aber leider nicht. Shopware hat schon, wenn ich mich recht erinnere, erhöhte Resourcen- bzw. Hardware-Anforderungen. Spätestens bei der Auswahl des Providers wird das wichtig (falls es denn immer noch so ist), beim Vorbereiten oder Offline-Testen kann man da vermutlich nicht viel machen. Übrigens, falls ein weiteres Problem bei Shopware auch immer noch besteht: Responsive sollte ein Shopsystem heutzutage sein!

      Tschö
      Ralf

  2. Hallo Ralf,
    ich konnte Xampp und WordPress zwar einwandfrei instalieren,
    hatte danach aber ewig lange zugriffszeiten auf alles, auch im Dashboard.
    Ich habe dann Deinen Artikel gefunden und die simple Änderung
    vorgenommen, und zack – alles ist schön.
    Vielen Dank und Gruß Andreas

    1. Hi Andreas,
      prima! Vielen Dank für Deine Rückmeldung und nun viel Spaß beim Coden :)
      Ralf

  3. Hallo Ralf, vielen Dank für deinen Lösungseintrag. Vor ca.6 Wochen musste ich anfangen mich in Wordpress einzuarbeiten. Habe dabei Xampp und WP auf meinen Rechner installiert. Das erste Problem war ein Tutorial im Internet zu finden, daß für Anfänger sinnvoll erschien.Gibt es nicht!! Mit bloggen habe ich nichts am Hut. Das zweite Problem war WP selbst! Beim Anklicken der Funktionen im Dashboard, Seiten, Beiträge, Design, etc. war die Ladezeit sehr hoch. Es war nicht zum Aushalten. Auch meine tiefgründigen Recherchen im Internet brachten keinen Erfolg. Es gibt keine Themen zu diesem Problem! Nur zu Xampp. Heute durch Zufall bin ich auf deinen Artikel gestossen. Habe die wp-config abgeändert und siehe da, es funktioniert. Ich bin der glücklichste Mensch. Vielen Dank. Viele Grüsse Joe

  4. Hallo Ralf, ich habe XAMPP installiert und dort dann Apache udn SQL gestartet mit Adminrechten. danach habe ich im Xampp Ordner unter /htdocs einen ordner Namens fvl angelegt also C:\XAMPP\hatdocs\fvl\ und in diesen meien ganzen dateien die ich vom Webspace per FTP geladen habe, dort reinkopiert!! danach in der wp-config und in der Datenbank noch die Änderungen gemacht (Datenbank siteurl und home http://localhost/fvl/)
    danach im Browser folgendes eingegeben: http://localhost/fvl/wp-admin
    Dann kommt ein weisser Hintergrund mit folgendem Text:
    ‚ . __( ‚Welcome to your WordPress Dashboard! This is the screen you will see when you log in to your site, and gives you access to all the site management features of WordPress. You can get help for any screen by clicking the Help tab in the upper corner.‘ ) . “; // Not using chaining here, so as to be parseable by PHP4. $screen = get_current_screen(); $screen->add_help_tab( array( ‚id‘ => ‚overview‘, ‚title‘ => __( ‚Overview‘ ), ‚content‘ => $help, ) ); // Help tabs $help = “ . __( ‚The left-hand navigation menu provides links to all of the WordPress administration screens, with submenu items displayed on hover. You can minimize this menu to a narrow icon strip by clicking on the Collapse Menu arrow at the bottom.‘ ) . ‚

    [… vom Admin gekürzt].

    Kannst du/Ihr mir mitteilen was da falsch läuft. Weiß mir nicht mehr zu helfen.

    Danke

    Kussel

    1. Hi Kussel, zunächst solltest Du die Änderungen in der Datenbank besser nach dieser Anleitung durchführen: http://journalismus-plus.de/generieren/wordpress-von-localhost-auf-webserver-umziehen/

      Das wird Dein Problem aber nicht lösen. Offenbar führt XAMPP bei Dir PHP nicht aus, sondern zeigt einfach den Dateiinhalt an.

      Hast Du tatsächlich http://localhost/… im Browser aufgerufen oder vielleicht doch eher file:///C:/…? Dann kommt nämlich genau die Anzeige, die Du gepostet hast.

    1. Wenn Du statt http://… versehentlich file:///… in die Adressleiste des Browsers eingibst, wird PHP nicht ausgeführt. Blöderweise zeigen viele Browser dieses sog. Protokoll in der Adresszeile nicht mehr an.

  5. nee, ich habe immer http:// vorangestellt. was ich dir noch sagen wollte. ich habe beom Hoster alfahosting angerufen und da war ein sehr freundlicher Herr der sich zeitgenommen hat für mich….er meinte ich solle die .htacess datei in .oldhtacess umbenennen und dann sollte ich mal hhtp://localhost/fvl eingeben in Mozilla und siehe da die Seite fvl erschien dann auch…nur das besch../wp-admin hatte dann auch nicht funktioniert :-(

    Ich möchte halt geren die Seite lokal auf meinem rechner haben da ich da mehr Memory habe (wg. revolution slider usw.). ich weiß man kann sich auch eine Subdomain abnlegen lassen aber das ist nicht meine Intension wg. Memory!

    Welche Möglichkeit sollte ich jetzt deiner meinung nach nehmen…einfache, bessere??

    Ralf, würde die Möglichkeit bestehen auch mal mit dir zu telefonieren?
    Gruss
    Kussel

  6. Ralf, YOU ARE THE BEST :-)
    dank DEinem Tipp mit dem Uniserver und der veränderten .htacess datei hat es nun endlich funktioniert!!

    Gruss

    Kussel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.