XAMPP mit PostgreSQL Support

The blue/white elephant logo of the PostgreSQL...
Image via Wikipedia

Bedingt durch meinen Job bin ich schon diverse Male auf dieses Problem gestoßen:

XAMPP, das sich speziell an Webentwickler wendet und ein leicht zu installierendes Paket an wichtigen Utensilien wie den Apache-Server und MySQL mit sich bringt, funktioniert standardmäßig nicht mit PostgreSQL. Da in unserem Unternehmen derzeit noch mit PostgreSQL gearbeitet wird, müssen sämtliche Tools und Scripte natürlich auch für dieses Datenbanksystem geschrieben werden. Das sorgt wiederum für ein Problem: Web-Anwendungen mit MySQL-Support lassen sich ohne Probleme lokal entwickeln – XAMPP sei dank. Doch da PostgreSQL nicht unterstützt wird, fällt eine lokale Entwicklung flach und man muss live am System arbeiten.

Wie nun XAMPP beibringen mit PostgreSQL zusammen zu arbeiten, so dass eine lokale Entwicklung möglich wird? Ich habe einige Zeit gesucht und auch im XAMPP-Forum nach Hilfe gesucht. Irgendwann wurde ich durch Zufall dann fündig und kramte aus dem Internet eine Seite hervor, die in wenigen Schritten erklärt, wie man XAMPP mit PostgreSQL Support installiert. Da es sicherlich auch andere Leute gibt, die nach einer Lösung suchen und möglicherweise auf diese noch nicht gestoßen sind, möchte ich an dieser Stelle eine Step-by-Step Anleitung geben.

Zuerst ein mal braucht Ihr drei Pakete, die herunter geladen werden müssen. Diese sind XAMPP, der PostgreSQL Server und das phpPgAdmin-Webinterface (Links führen auf die Downloadseiten). Wohin Ihr XAMPP installiert, bleibt natürlich Euch überlassen – zum Verständnis legen wir das Standardverzeichnis dafür aber an dieser Stelle mal fest, bzw. verwenden das von der Installationsroutine vorgeschlagene Verzeichnis „C:\XAMPP“ .

Die Installation von XAMPP ist selbsterklärend und simpel, weshalb ich an dieser Stelle nicht darauf eingehe und direkt zur Installation des lokalen PostgreSQL-Servers springe. Startet hier also die Installationsroutine für den Server und ändert das Installationsverzeichnis zu „C:\XAMPP\pgsql“ . Das vorgeschlagene Verzeichnis für das Ablegen von Daten kann unverändert bleiben ( „C:\XAMPP\pgsql\data“ ), es sei denn ihr möchtet die Informationen der Datenbank(en), Tabellen und deren Inhalte woanders speichern.

Das nächste im Bunde ist das Webinterface phpPgAdmin für den Zugriff auf den Server via Browser (das MySQL-Äquivalent dazu ist phpMyAdmin). Dieses entpackt Ihr ebenfalls in das XAMPP-Verzeichnis. Je nachdem, welche Version von phpPgAdmin verwendet wird, beinhaltet der Ordnername noch die Versionsnummer (Bsp: phpPgAdmin-4.2.3 – diese solltet Ihr nach Möglichkeit entfernen, so dass das Zielverzeichnis für die Dateien „C:\XAMPP\phpPgAdmin“ lautet.

Das war die Installation der benötigten Software. Nun kommt die Konfiguration, damit XAMPP auch mit PostgreSQL zusammen arbeitet – dazu müssen drei Dateien bearbeitet werden. Öffnet als erstes die „config.inc.php“ im Verzeichnis „C:\XAMPP\phpPgAdmin\conf“ (unter Umständen heißt die Datei „config-inc.php-dist“ – bennent sie in diesem Fall um). Nun sucht nach folgender Zeile:

$conf['extra_login_security'] = true;

Ändert die Zeile ab in:

$conf['extra_login_security'] = false;

Speichert die Datei ab und geht zum nächsten Schritt über.

Öffnet nun die Datei „php.ini“ im Verzeichnis „C:\XAMPP\php“ und sucht nach dieser Zeile:

; extension=php_pgsql.dll

Entfernt das Semikolon (;) am Anfang der Zeile, so dass PHP diese Zeile nicht als Kommentar erkennt, sondern als zu ladende DLL-Datei.

Nun noch die letzte Änderung. Geht dazu in die Datei „http-xampp.conf“ im Verzeichnis „C:\XAMPP\apache\conf\extra“ und sucht nach folgendem Abschnitt:

Alias /phpmyadmin "C:/XAMPP/phpMyAdmin/"
<Directory "C:/XAMPP/phpMyAdmin">
AllowOverride AuthConfig
</Directory>

Fügt nun darunter folgenden Abschnitt ein:

Alias /phppgadmin "C:/XAMPP/phpPgAdmin/"
<Directory "C:/XAMPP/phpPgAdmin">
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

Jetzt nur noch den Apache-Server neu starten (am besten über das XAMPP Control-Programm) und Ihr könnt sowohl via Browser (http://localhost/phppgadmin) auf den PostgreSQL-Server zugreifen als auch in euren Web-Applikationen die PHP-eigenen PostgreSQL-Befehle wie „pg_connect“ etc. verwenden.

Anmerkung:

Deprecated: Assigning the return value of new by reference is deprecated in C:\XAMPP\phpPgAdmin\classes\Misc.php on line xxx

Solltet Ihr diese Meldung (und 2-3 Warnings) beim Aufruf von phpPgAdmin angezeigt bekommen, müsst Ihr in der angegebenen Datei ebenfalls eine kleine Änderung vornehmen. Die betreffende Zeile lautet wie folgt (oder so ähnlich, da es sich in neueren Versionen unterscheiden kann):

$data =& new $_type($_connection->conn);

Entfernt hier einfach das kaufmännische UND (&) vor dem „new“ und speichert die Änderung ab. Danach sollte phpPgAdmin wieder aufrufbar sein.

(Quelle: How To Install XAMPP in Support with PostgreSQL And phpPgAdmin)

*Update*

Leute mit Windows XP, die Probleme nach der Einrichtung feststellen sollten, achten am besten auf Sebastians Lösungshilfe in den Kommentaren.

13 thoughts on “XAMPP mit PostgreSQL Support”

  1. Bei mir gab es leider unter Windows XP noch die folgenden zwei Fehlermeldungen beim Aufruf von „http://localhost/phppgadmin/“:

    „Php Startup: Unable to load dynamic library ‚C:\php\ext\php_pgsql.dll“

    und

    „LIBPQ.dll was not found“

    Abhilfe:

    Systemsteuerung –> System –> Erweitert –> Umgebungsvariablen –> Systemvariablen –> PATH um folgenden Eintrag ergänzen:

    „;C:\Program Files\PostgreSQL\8.4\bin“

    Das Semikolon nicht vergessen und den Pfad eventuell anpassen.

    Diese und weitere Maßnahmen findet man hier:

    http://nl3.php.net/manual/en/pgsql.setup.php

    Gefällt mir

  2. Ich habe alles genau so gemacht, postgres-befehle funktionieren leider immer noch nicht.
    Ich verwende php 5.4.7 und postgres 9.2.4 unter Windows 7 (64bit).
    Beim restart von Apache kommt im error-log keine Fehlermeldung mehr (die ich bei anderen Lösungsvarianten immer bekommen habe). Aber in der phpinfo() sehe ich nichts bzgl. pstgres, und wenn ich mich verbinden will, kommt folgende Fehlermeldung:
    Fatal error: Call to undefined function pg_connect()
    Ich weiß echt nicht mehr was ich tun soll, ich suche schon seit 2 Tagen auf Google, konnte aber nichts finden

    Gefällt mir

  3. Überprüfe mal bitte Deine php.ini im XAMPP-Ordner. Suche dort den folgenden Eintrag:

    extension=php_pgsql.dll

    Wenn dort ein Semikolon vorgestellt ist, entferne es. Das sollte Dein Problem lösen. Wenn nicht, melde Dich einfach noch mal.

    Gefällt mir

  4. Hallo,
    ich habe xampp und PostgreSQL bereits installiert und versuche es nun miteinander arebiten zu lassen. Muss Postgresql unbedingt in das Xampp-Verzeichnis installiert werden oder reicht der von Sebastian beschriebene Zusatz bei den Systemvariablen? Im Moment liegt PostgreSQL bei mir auf „C:\Program Files\PostgreSQL“
    (Windows 7/ 64bit; xampp 1.8.1, PostgreSQL 9.2; phpPgAdmin 5.1)

    Vielen Dank im Voraus.

    Gefällt mir

  5. Hallo Sandro,

    ich bin mir diesbezüglich nicht sicher, ob PostgreSQL zwangsläufig im XAMPP-Verzeichnis installiert sein muss (mein Beitrag ist lediglich eine ins Deutsche übersetzte Anleitung eines englischsprachigen Originals).

    Da der Beitrag nun auch schon etwas älter ist und ich berufstechnisch schon seit Längerem nicht mehr mit PGSQL arbeite, kann ich Dein beschriebenes Szenario derzeit auch nicht nachstellen und testen.

    Sebastians Ansatz mit der Systemvariable bezieht sich (so glaube ich zumindest) nur auf das Problem der manchmal fehlenden DLLs, die durch das Setzen nachträglich korrekt eingebunden werden können.

    Du kannst ja mal versuchen, ob sich PGSQL durch das Setzen der Systemvariable generell einbinden lässt, auch wenn es nicht wie beschrieben im XAMPP-Hauptverzeichnis liegt.

    Wenn ich etwas Zeit finde, könnte ich Dein Szenario nachstellen – aber ich vermute, dass Du es bis dahin wohl schon selbst gelöst hast.

    Gefällt mir

    1. Da ich damit bisher nicht gearbeitet habe, kann ich nur mutmaßen. Sollte es mit der eingebundenen MySQL-Datenbank funktionieren, dann sicherlich auch mit der Postgre-Datenbank. Im Grunde erweitert man das XAMPP-System ja nur um eine weitere Datenbank, die im Installationspaket nicht vorhanden ist.

      Gefällt mir

  6. „Neues XAMPP Sicherheitskonzept:

    Der Zugriff auf das angeforderte Objekt ist nur aus dem lokalen Netzwerk möglich.

    Diese Einstellung kann in der Datei „httpd-xampp.conf“ angepasst werden. “

    Trotz Einstellungen in httpd-xampp.conf auf:

    Allow from all

    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var

    komme ich nicht auf phpmyadmin, geschweige denn auf http://localhost/phppgadmin :(

    „Objekt nicht gefunden!

    Der angeforderte URL konnte auf dem Server nicht gefunden werden. Sofern Sie den URL manuell eingegeben haben, überprüfen Sie bitte die Schreibweise und versuchen Sie es erneut.

    Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber“

    Eine Idee?

    Gefällt mir

    1. Hat sich erledigt, habe es nicht richtig gelesen, Tschuldigung!

      Musste aber dennoch ein „Require all granted“ hinzufügen zum Abschnitt

      Alias /phppgadmin „C:/XAMPP/phpPgAdmin/“

      AllowOverride AuthConfig
      Order allow,deny
      Allow from all

      Sonst hat er mir einen Error 403 geworfen.

      Gefällt mir

  7. Hallo auch,

    habe soeben die Einrichtung mit den aktuellsten Paketen (xampp-win32-5.6.11-0-VC11-installer.exe, postgresql-9.4.4-3-windows-x64.exe, phpPgAdmin-5.1.zip) unter Windows 10 Pro x64 durchgeführt und Xampp nach dieser Anleitung mit Postgres verbunden.

    Hat alles wunderbar funktioniert, lediglich der Start von Xampp hat bei aktivierter UAC mittels Administrator zu erfolgen (Als Administrator ausführen).

    MySQL zickte auch ein wenig herum, brachte die folgende Meldung:
    „Der phpMyAdmin-Konfigurationsspeicher ist nicht vollständig konfiguriert, einige erweiterte Funktionen wurden deaktiviert.“
    Wenn man jedoch dem Link neben dieser Meldung folgt, gibt es ganz oben auf der Seite einen Hinweis, dass erforderliche Tabellen neu aufgebaut werden können. Nach einem Klick auf diesen Link wechselten die Statusanzeigen alle auf grün und seitdem läuft alles problemlos.

    Gefällt mir

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s