Paule: Umstellung PHP5 auf 7 - uralt mysql auf mariadb 10.2.6

Hallo,

in meinem internen Netzwerk bin ich gerade dabei 10 Jahre alte php skripts auf php 7.4.6 umzustellen. Dabei wird die alte mysql Datenbank durch mariadb 10.2.6 ersetzt.

Beim Datenbank Connect bekomme ich eine Warnung:

" mysqli_connect(): (HY000/2002): Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat. in C:\xampp\htdocs\admin\dbStart.inc.php on line 3".

Es dauert recht lange und dann wird die Datenbank connected.

Das Connecting mache ich so in Zeile 3:

$ConnectHnd = mysqli_connect("195.168.1.45","root","xxxxx","meineDB");

Ausserdem bekomme ich noch:

Notice: Undefined index: i in C:\xampp\htdocs\admin\run.inc.php on line 2

Code ab Zeile 2:

if($_GET['i']){
	$i = $_GET['i'];
} else {
	$i = "0";
}

Wie kriege ich das weg?

Die bei Frau Google gezeigten Treffer führen zu nichts. Vielleicht habe ich auch den ultimativen Tip übersehen.

Danke schonmal Gruß Paule

  1. Tach!

    Beim Datenbank Connect bekomme ich eine Warnung:

    " mysqli_connect(): (HY000/2002): Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat. in C:\xampp\htdocs\admin\dbStart.inc.php on line 3".

    Es dauert recht lange und dann wird die Datenbank connected.

    Sieht mir eher so aus, als ob sie nicht connected wird.

    Wie kriege ich das weg?

    Ursache suchen und beseitigen.

    Lässt sich die Datenbank denn überhaupt von außen ansprechen, oder wird das verhindert durch beispielsweise einen nicht geöffneten Port oder eine nicht durchborte Firewall?

    Notice: Undefined index: i in C:\xampp\htdocs\admin\run.inc.php on line 2

    Code ab Zeile 2:

    if($_GET['i']){
    	$i = $_GET['i'];
    } else {
    	$i = "0";
    }
    

    empty() und isset() können das Vorhandensein von Variablen und Array-Einträgen prüfen, ohne eine solche Notice auszulösen. Seit Version 7.0 gibt es auch den "null coalescing operator", der auch keine Notice wirft, und eine derartige Prüfung und Zuweisung einfacher macht.

    $i = $_GET['i'] ?? '0';
    

    dedlfix.

    1. Ok, mittlerweile hab ich festgestellt, die Datenbank wir NICHT connected.

      Vermutlich liegt das an den Rechten.

      Wie kriege ich das hin, dass von allen Rechnern mit dem Adressraum 192.168 connected werden kann?

      1. Hallo Paule,

        indem Du das so angibst. Zumindest hast Du oben die 195 gepostet, nicht die 192.

        Die von Dir aufgeschriebene Adresse ist öffentlich und findet sich in der Slowakei.

        Wenn das ein Typo war und Du 192.168.1.45 meintest... Du hast da "xampp" stehen, ich nehme also an, dass Winnetou und Nscho-Tschi Maria im gleichen Dorf Computer leben.

        In dem Fall wäre es sinnvoller, als Serveradresse localhost oder 127.0.0.1 zu wählen. Es wäre auch zu prüfen, wie MariaDB konfiguriert ist - auf welche IP lauscht der Server? Es ist bei einer XAMPP-Installation vermutlich NICHT die von außen erreichbare Adresse 192.168.1.45

        Wenn Du mehr als einen Computer hast, der mit Maria reden können soll, dann muss sie so eingerichtet werden, dass sie auf 192.168.1.45 lauscht. Die Firewall auf dem Server Computer muss zulassen, dass der MariaDB Server dort einen Port öffnet, und eingehende Verbindungen zulassen. Welcher Port das für MariaDB genau ist, sollte die Doku wissen, bzw. es sollte auch in der Konfiguration zu finden sein.

        Wenn deine XAMPP-Marie ebenfalls eine my.ini im Installationsordner der DB nutzt (oder etwas ähnliches), dann sollte darin bind-address zu finden sein. Fehlt das, lauscht Mariechen auf die 127.0.0.1, a.k.a. localhost. Es sollte auch eine "port =..." Zeile geben. Das ist der IP Port, über den kommuniziert wird. Fehlt die port-Angabe, ist 3306 der Default.

        Soll sie auf 192.168.1.45 lauschen, braucht es dafür eine bind-address Zeile. Und die Windows Firewall muss den Port von außen hereinlassen.

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Boah, wie bescheuert ist das denn! Ich hab da wirklich 195 statt 192 geschrieben und nicht gemerkt!! OK ich verziehe mich in meine Ecke und heule wegen erwiesener Dummheit!

          DANKE! Jetzt löbbts!

          1. Hallo,

            erwiesener Dummheit!

            Ich hätte auf erwiesener Blindheit plädiert...

            Gruß
            Kalk

      2. Tach!

        mittlerweile hab ich festgestellt, die Datenbank wir NICHT connected.

        Vermutlich liegt das an den Rechten.

        Nein, wenn es ein Rechteproblem wäre, käme die Verbindung sofort zustande und würde wegen dieser fehlenden Rechte abglehnt und beendet. Mit entsprechendem Text in der Fehlermeldung.

        Um Rechte zu prüfen muss MySQL/MariaDB alle drei Daten Username, Passwort und Host prüfen. Host allein geht nicht. Dazu muss es die Verbindung annehmen und die Anmeldedaten entgegennehmen.

        Wie kriege ich das hin, dass von allen Rechnern mit dem Adressraum 192.168 connected werden kann?

        Das ist ja mittlerweile geklärt.

        dedlfix.