Anzeige:
Ergebnis 1 bis 1 von 1

Thema: DB-Verbindungen und Verwaltung der Verbindungen - mit PDO auf einem Linux-Server

  1. #1
    Registrierter Benutzer
    Registriert seit
    Apr 2016
    Beiträge
    277

    DB-Verbindungen und Verwaltung der Verbindungen - mit PDO auf einem Linux-Server

    Moin hallo Commuity,


    hier eine Frage zu Verbindungen und Verwaltung der Verbindungen - insbes. zur PDO-Basisklasse. Es geht um eine Webanwendung auf einem Server - einem Linux-Server (läuft auf OpenSuse).

    vgl. https://www.php.net/manual/de/pdo.connections.php


    Verbindungen werden durch das Erstellen von Instanzen der PDO-Basisklasse erzeugt. Es ist unerheblich, welchen Treiber Sie benutzen wollen. Sie benutzen immer den PDO-Klassennamen.Der Konstruktor erwartet Parameter zur Angabe der Datenbankquelle (auch bekannt als DSN) und optional für Benutzername und Passwort (falls vorhanden).

    Beispiel #1 Mit MySQL verbinden


    Code:
    <?php
    
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    
    ?>

    Wenn es Fehler bei der Verbindung gibt, wird eine Ausnahme vom Typ PDOException geworfen. Sie können die Ausnahme abfangen, wenn Sie sich selbst um die Fehlerbedingung kümmern wollen, oder Sie können es einer globalen Routine zur Ausnahmebehandlung überlassen, die Sie mit set_exception_handler() konfigurieren.

    Beispiel #2 Verbindungsfehler behandeln

    Code:
    ?php
    
    try {
    
       $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    
       foreach ($dbh->query('SELECT * from FOO') as $row) {
    
          print_r($row);
    
       }
    
       $dbh = null;
    
    } catch (PDOException $e) {
    
       print "Error!: " . $e->getMessage() . "<br/>";
    
       die();
    
    }
    
    ?>
    ....also ich geh nochmals einen Schritt zurück zu einem Fehler: beim Installieren einer PHP Anwendung - ( https://www.Limesurvey.org) auf einem Server ) der doch ganz stabil läuft und auf dem es im Grunde keine DB-Fehler(Verbindungsfehler) gibt.

    Der Fehler:
    Code:
     db-connection: SQLSTATE[HY000] [2002] No such file or directory
    vgl. die Fehlerbeschreibung: https://forums.limesurvey.org/forum/...do-here#208597

    Hintergrund: Also das bedeutet dass php nicht den mysql.default_socket file finden kann. Ich denke dass ich hier mal ein paar Tests anstellen muss um zu sehen, ob ich zur mysql mittels pdo Verbindung herstellen kann.

    Code:
    try{
    
        $dbh = new pdo( 'mysql:host=127.0.0.1:3308;dbname=axpdb',
    
                        'admin',
    
                        '1234',
    
                        array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    
        die(json_encode(array('outcome' => true)));
    
    }
    
    catch(PDOException $ex){
    
        die(json_encode(array('outcome' => false, 'message' => 'Unable to connect')));
    
    }

    ....ist die Frage ob ich hier display errors off gleich noch brauche & das exception-Handling? Hier noch eine weitere Version:


    Code:
    $host     = "localhost";//the type of our database, in this case my host machine    - well it is possible to use mysql:host=127.0.0.1:3308;dbname=axpdb',
    
    $user     = "root";    //here we need the Username to use the database
    
    $pass     = "qwerty123xyz";// here the password for that user
    
    $dbname   = "DB";//Name of the corresponding database
    
    $port = "3306";
    
    $charset = 'utf8mb4';
    
    
    try {
    
        $connection = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    
        $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    
    }catch(PDOException $e)
    
    {
    
      echo $e->getMessage();                        
    
    }

    mir oder ohne error-handling .... hier mit:



    Code:
    <?php
    
    $host     = "localhost";// the type of our database, in this case my host machine    - well it is possible to use mysql:host=127.0.0.1:3308;dbname=axpdb',
    
    $servername = "localhost";
    
    $username = "username";//here we need the Username to use the database
    
    $password = "qwerty123xyz";// here the password for that user
    
    $port = "3306"; //here we need the port
    
    $charset = 'utf8mb4';// the charset is pretty important!
    
    
    try {
    
      $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
    
      // set the PDO error mode to exception
    
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
      echo "Connected successfully";
    
    } catch(PDOException $e) {
    
      echo "Connection failed: " . $e->getMessage();
    
    }
    
    ?>

    wie auch hier...:


    Code:
    $host     = "localhost";// the type of our database, in this case my host machine   -  well it is possible to use mysql:host=127.0.0.1:3308;dbname=axpdb',
    
    $servername = "localhost";
    
    $username = "username";//here we need the Username to use the database
    
    $password = "qwerty123xyz";// here the password for that user
    
    $port = "3306"; //here we need the port
    
    $charset = 'utf8mb4';// the charset is pretty important!
    
    
    try {
    
        $connection = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    
        $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    }catch(PDOException $e)
    
    {
    
      echo $e->getMessage();                        
    
    }

    für ein Array mit PDO hier die einzelnen Teile:

    PDO::ATTR_ERRMODE - wichtig - immer auf PDO::ERRMODE_EXCEPTION. Es soll immer ein Error rauswerfen wenns nicht geklappt hat wenn es zu einem Fehler kommt mit mysql_query()
    PDO::ATTR_EMULATE_PREPARES - diese Option zeigt ob PDO entweder einen emulation mode verwendet oder eben nicht.
    PDO::setAttribute() method, turned off by default als eine Verbindungsoption
    PDO::ATTR_DEFAULT_FETCH_MODE - Eine Komfort-Option. Obwohl die fetch method immer im fetch function call (wie etwa hier $row = $stmt->fetch(PDO::FETCH_ASSOC) läuft - sind dies die beliebteste Fetch-Modes:
    PDO::FETCH_ASSOC and PDO::FETCH_OBJ welches PDO veranlasset die Ergebnisse als Reihen zu holen - als assozotatives array oder als ein Objket



    Vorhaben: ich werde jetzt mit dem Script testen wie die Verbindung via PDO zur DB aufgenommen wird.



    Also es geht um diesen Thread hier;

    https://forums.limesurvey.org/forum/...do-here#208597

    da denke ich. ist das unbed. meine Servereinstellung oder kann das ggf auch noch daran liegen dass ich ggf. in dem LimeSurvey noch was besser anpassen sollte - also ggf. nach einem Workaround in dem LimeSurvey-Script suchen welcher mir erlaubt um diese dämliche (sorry) Installationsroutine zu kommen!?

    Gibt es da ggf. eine Möglichkeit. Das Interessante ist - alles was auf dem Server noch läuft - (z.B. Wordpress ) lässt sich einfach installieren - da ist es nie ein Problem die Verbindung zur DB herzustellen... !

    Nur bei dem Limesurvey hab ich diese Socket_Probleme.

    ich werde mir das von dir verlinkte nochmals genau durchlesen und durcharbeiten


    update:

    Bei mit läuft der Server unter Linux t, und ich hab schon öfter gehoert dass man dann Probleme beim Verbindungsaufbau bekommen kann.

    ggf. sollte ich das mal mit dem charset UTF8 und einer der folgenden DSN testen;

    mysql:host=localhost;port=3307;dbname=testdb
    mysql:unix_socket=/tmp/mysql.sock;dbname=testdb

    Quelle:

    https://www.php.net/manual/en/ref.pd...connection.php

    Hatte vor einem Jahr schon mal die Probleme: Kann mich leider nicht mehr erinnern, welche Lösung damals die richtige war, glaube aber der socket.
    Letztendlich sollte ich mir halt auch mal funktionierende Beispiele anschauen, das ist oft besser als die PDO Dokumentation (leider):
    Beispiel Laravel Framework: https://github.com/laravel/framework...lConnector.php
    Geändert von diver (28.11.20 um 20:38 Uhr)
    Interessiert an Linux, SBC (Raspi & co), und WordPress News: https://wptavern.com :: Entwicklung: https://make.wordpress.org/core/ ::/[/url] :: die neue Knowledge-Base: https://affine.pro :: Nachfolger von miro, notion u. monday

Ähnliche Themen

  1. Linux-Proxy bremst die Verbindungen aus
    Von Wurstpelle im Forum Router und Netzaufbau
    Antworten: 9
    Letzter Beitrag: 04.10.09, 09:44
  2. Linux-Router für DSL-Verbindungen
    Von fly_singapore im Forum Router und Netzaufbau
    Antworten: 9
    Letzter Beitrag: 23.05.04, 11:24
  3. Antworten: 0
    Letzter Beitrag: 31.10.03, 15:08
  4. SSH Verbindungen mit einem Client hinter Proxy aufbauen?
    Von SCH4K4L im Forum Linux als Server
    Antworten: 4
    Letzter Beitrag: 28.07.03, 20:42
  5. squid und mehre verbindungen von einem client
    Von im Forum Router und Netzaufbau
    Antworten: 0
    Letzter Beitrag: 25.02.01, 23:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •