Postgres und PHP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Postgres und PHP

    Guten Abend!

    Möchte gerade mal die Vor- und Nachteile von Postgres gegenüber MySQL testen und habe auf meinem System (Linux Fedora 6) Postgres installiert.
    Läuft alles brav, kann per Console auf die DB, als auch auf der Console (nicht im Browser!) PHP Scripts ausführen, die die Connection auf die DB herstellen.
    Nur im Browser gehts nicht.
    Tippe mal, dass irgendwas mit den Rechten nicht stimmt?
    Jemand eine Ahnung? Und bitte keine Abhandlung, warum MySQL besser ist ;-)

    Vielen Dank schonmal

    Matt
    www.vino.la
    www.any-where.de
    www.gospical.de

  • #2
    Jemand eine Ahnung? Und bitte keine Abhandlung, warum MySQL besser ist
    solange du einfache Sachen machst und auf InnoDB verzichten kannst, ist MySQL superschnell, ansonstens aber nicht so mächtig im Vergleich zu PostgreSQL, da viele Features fehlen, die nun nach und nach hinzukommen; ausserdem bieten die meisten Hoster nur MySQL an, daher laufen die meistens PHP-Anwendungen mit MySQL

    Kommentar


    • #3
      Ich kann tatsächlich nicht auf InnoDB verzichten bei dem Projekt. Im Übrigen ist die Mächtigkeit von Postgres in Bezug auf mögliche Functions auch wesentlich größer als MySQL.

      Aber nochmal meine Frage:

      Warum kann ich nicht per Browser (der Apache läuft als apache User) nicht auf die Datenbank mit meinem PHP Script?
      www.vino.la
      www.any-where.de
      www.gospical.de

      Kommentar


      • #4
        Original geschrieben von mmuell23

        Aber nochmal meine Frage:

        Warum kann ich nicht per Browser (der Apache läuft als apache User) nicht auf die Datenbank mit meinem PHP Script?
        ohne Code nix los . Irgendwelche Fehlermeldungen? error_reporting(E_ALL) gesetzt?

        Kommentar


        • #5
          Re: Postgres und PHP

          Dein Irrtum liegt darin, "geht nicht" für eine brauchbare Problembeschreibung zu halten.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Oh sorry, die Fehlermeldung:

            Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: could not connect to server: Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432? in /var/www/html/DBProjekt/www/test.php on line 10


            Der Code:


            PHP-Code:
            $host "localhost";
            $dbname "meinedatenbank";
            $user "meinuser";
            $pass "meinpassword";
            // Connection-String zusammensetzen
            $cst "host=".$host." user=".$user." password=".$pass;
            // Verbindung aufbauen
            $dbconn pg_connect($cst);// or die("Verbindungsaufbau fehlgeschlagen."); 
            Wie gesagt: Als Script auf der Console funktioniert alles wunderbar, nur im Browser nicht. Auf welche Userrechte muss ich denn achten bei Apache und Postgres?
            www.vino.la
            www.any-where.de
            www.gospical.de

            Kommentar


            • #7
              Die Fehlermeldung fragt dich auch: ist Web- und SQL-Server auf der gleichen Maschine? und PostgreSQL horscht auf dem Port 5432?

              wie ist das denn nun?

              Kommentar


              • #8
                Natürlich (siehe ersten Beitrag):

                Apache und Postgres laufen auf gleicher Maschine (Fedora Core 6), Postgres hört auf Standardport und der ist 5432.

                Nochmal: Das PHP auf der Console ausgeführt liefert das richtige Ergebnis, nämlich einen DB-Connect. Die Lösung liegt also irgendwo beim Apache/PHP, bzw. bei dessen User. Ich weiss nicht, ob ich an der Konfiguration von Postgres irgendetwas so ändern muss, dass der apache irgendwelche Rechte bekommt, bzw. weiss ich auch nicht, ob der Apache überhaupt über diesen User auf Postgres geht.

                Hoffe, es ist nun etwas klarer.

                Grüße und Danke schonmal!
                www.vino.la
                www.any-where.de
                www.gospical.de

                Kommentar


                • #9
                  lasse mal host weg, mach mal so:

                  PHP-Code:
                  $cst "user=".$user." password=".$pass." dbname=".$dbname
                  grund: du hast wahrscheinlich TCP/IP in postgresql.conf nicht aktiviert, daher lässt PostgreSQL auch keine Verbindung drüber zu.

                  Kommentar


                  • #10
                    postmaster ist mit -i gestartet und akzeptiert TCP/IP.
                    Zusätzlich hab ich eben in der postgresql.conf "*" eingetragen als erlaubte hosts (listen_addresses).
                    Tut auch leider nix.

                    Vielleicht liegts an der pg_hba.conf?
                    Muss ich da was spezielles eintragen? Die ist noch im Defaultzustand.
                    www.vino.la
                    www.any-where.de
                    www.gospical.de

                    Kommentar


                    • #11
                      hast du auch ohne host versucht?

                      Kommentar


                      • #12
                        Ja, auch.
                        Keine Connection, aber andere Fehlermeldung:

                        Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: could not connect to server: Permission denied Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? in /var/www/html/DBProjekt/www/test.php on line 10
                        www.vino.la
                        www.any-where.de
                        www.gospical.de

                        Kommentar


                        • #13
                          hm ... dann schau mal nach, ob du in der pg_hba.conf die Connection-daten eingetragen hast.

                          Ein Datensatz kann eines dieser drei Formate haben:
                          • local datenbank benutzer authentifizierungs-methode [authentifizierungs-option]
                          • host datenbank benutzer IP-adresse IP-maske authentifizierungs-methode [authentifizierungs-option]
                          • hostssl datenbank benutzer IP-adresse IP-maske authentifizierungs-methode [authentifizierungs-option]

                          Kommentar


                          • #14
                            PHP-Code:
                            local   all         all                              trust
                            # IPv4 local connections:
                            host    all         all         127.0.0.1/32          trust
                            # IPv6 local connections:
                            host    all         all         ::1/128               trust
                            host    all     0.0.0.0         0.0.0.0                 trust 
                            Sollte korrekt sein oder?
                            www.vino.la
                            www.any-where.de
                            www.gospical.de

                            Kommentar


                            • #15
                              Original geschrieben von asp2php
                              solange du einfache Sachen machst und auf InnoDB verzichten kannst, ist MySQL superschnell
                              ich bitte um benchmarks in denen innodb langsamer als myisam ist.

                              ich kenne nicht ein einziges szenario (pk, key, limit, range, ...) in dem myisam schneller waere...
                              Zuletzt geändert von loci; 21.03.2007, 11:46.
                              1101100 1101001 1100110 1100101 1101001 1110011 1100001 1100010 1101001 1110100 1100011 1101000

                              /(bb|[^b]{2})/

                              Kommentar

                              Lädt...
                              X