PHP MySQLi Connection Refused vHost

Status
Für weitere Antworten geschlossen.

Andreas_J

Benutzer
Mitglied seit
08. Apr 2020
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo Zusammen

Ich habe meine Website offline programmiert und alle moeglichen Datenbankzugriffe funktionieren in der "Simulation" auf dem PC.
Nun wollte ich heute die Website auf mein Synology NAS hochladen und jetzt stehe ich vor einem
"Warning: mysqli_connect(): (HY000/2002): Connection refused in /volume1/vHost/php/initialfetch.php on line 7".

In dieser besagten Linie 7 befindet sich folgender Code, mit dem ich die Datenbankverbindung herstelle:
PHP:
    $conn = mysqli_connect($servername, $username, $password, $db_name);

Fuer die entsprechenden Parameter habe ich folgende Werte zugewiesen:
PHP:
    $servername = "192.168.1.135:3307";
    $username = "root";
    $password = "meinPasswort";
    $db_name = "hypnoticseals";

Ich habe fuer den Parameter $servername folgende Eintraege versucht: localhost, localhost:3306, localhost:3307, 192.168.135:3306
("192.168.1.135" entspricht der IP die in meinem lokalen Netzwerk dem Synology NAS vergeben wurde).

Der virtuelle Host laeuft mit Apache HTTP Server 2.2 und PHP 7.0.

Hat da jemand von euch bereits Erfahrungen mit gemacht und/oder kann mir bei diesem Fehler weiterhelfen? :confused:

Gruesse,
Andreas
 

DustFireSky

Benutzer
Mitglied seit
22. Sep 2014
Beiträge
341
Punkte für Reaktionen
51
Punkte
34
Connection refused heißt schlicht => Verbindung abgelehnt.

Den Standardport muss man nicht angeben. Die Portangabe ist nur zu machen, wenn eben nicht der Standardport benutzt wird. Soviel dazu. Mit nur localhost muss das funktionieren.

Hast du mal probiert zum Testen einfach mal die Firewall der Syno abzuschalten? Wenn's danach geht, dann musst du das in der Firewall noch konfigurieren. Bitte nicht abgeschaltet lassen! Das wäre mein Tipp warum es nicht geht. Denn wenn der Login falsch wäre, würde die Meldung auch anders lauten. Hier ist es klar ein Verbindungsproblem.

Und du bist dir auch sicher, dass der MySQL Server läuft?
 
Zuletzt bearbeitet:

Andreas_J

Benutzer
Mitglied seit
08. Apr 2020
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Vielen Dank für deine Überlegungen!

Der Standardport ist nach meiner Recherche die 3306 aber ich nutze MariaDB 10 für den Datenbankserver. Das habe ich vergessen zu erwähnen. Und dieser Server gibt an, dass er den Port 3307 benutzt -> deshalb habe ich auch beide Ports getestet.

Da ich einen virtuellen Host benutze und mein Datenbankserver nicht auf dem virtuellen Host läuft, dürfte ja localhost eigentlich nicht funktionieren. Da gab es bei mir dann auch einen anderen Fehler: "Warning... no such file or directory".

Ich habe nun mal probiert die Firewall auszuschalten -> keine bemerkbaren Veränderungen.
Habe dann die Firewall wieder aktiviert und eine Regel erstellt, dass die entsprechenden Ports der Datenbank(3307) und der vHost(443) zugelassen sind (siehe Link) -> leider auch keinen Erfolg.
http://prntscr.com/rvx9dc

Der Datenbankserver läuft ohne Probleme: D.h. ich kann mich via phpmyadmin in das Interface einloggen und auf alle Datenbanken und Datensätze zugreifen.

Update: Ich habe bei den Settings für MariaDB 10 zwischen den Ports 3306 und 3307 gewechselt und habe unterschiedliche Fehlermeldungen bekommen:
3307: "Warning... connection refused" (gleicher Fehler wie ursprünglich)
3306: "Warning: Packets out of order. Expected 0 received 1. Packet size=78 in /volume1/vHost/php/initialfetch.php on line 7"


Gruss
 
Zuletzt bearbeitet:

DustFireSky

Benutzer
Mitglied seit
22. Sep 2014
Beiträge
341
Punkte für Reaktionen
51
Punkte
34
Vielen Dank für deine Überlegungen!

Da ich einen virtuellen Host benutze und mein Datenbankserver nicht auf dem virtuellen Host läuft, dürfte ja localhost eigentlich nicht funktionieren. Da gab es bei mir dann auch einen anderen Fehler: "Warning... no such file or directory".

Ja klar, der virtuelle Host ist wahrscheinlich für deine Webseite, richtig? Ich verstehe trotzdem nicht, wie du darauf kommst, das dann deshalb localhost nicht funktionieren soll. Ich finde es vor allem interessant, das dann eine andere Meldung präsentiert wird, wenn du die Verbindungsdaten in deiner initialfetch.php Datei nach localhost änderst. Welchen Ordner oder Datei findet er denn dann nicht? versuchst du in den PHP Dateien irgendwelche Ordner/Dateien zu includen? Denn wenn das der Fall ist, so hat die DB Verbindung doch funktioniert und das Script ist weiter gelaufen. Ich kenne natürlich jetzt auch deine Scripte nicht und was diese nun genau machen. Aber dann wäre dies schlicht ein anderes Problem und das DB Problem ist schon gegessen. :)
 

Andreas_J

Benutzer
Mitglied seit
08. Apr 2020
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Der virtuelle Host ist für die Website, ja. Es kann sein, dass ich da etwas falsch verstanden habe und localhost trotzdem funktioniert.
Auf jedenfall kommt dann wie gesagt die Fehlermeldung, dass ein directory nicht gefunden werden kann: "Warning: mysqli_connect(): (HY000/2002): No such file or directory in /volume1/vHost/php/initialfetch.php on line 7"

Das komplette PHP Skript sieht wie folgt aus:

PHP:
<?php
    $servername = "localhost";
    $username = "root";
    $password = "meinPasswort";
    $db_name = "hypnoticseals";

    $conn = mysqli_connect($servername, $username, $password, $db_name);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

                            /* Startseite */
                        /* Matchcard 1 */
    $m1req = "SELECT * FROM matches ORDER BY matchid DESC LIMIT 1";
    $m1res = mysqli_query($conn,$m1req);
    $m1data = mysqli_fetch_assoc($m1res);
    }

                            /* Matches */
    $archreq = "SELECT * FROM matches ORDER BY matchid DESC LIMIT 10";
    $archres = mysqli_query($conn, $archreq);
    $archamt = mysqli_num_rows($archres);

    for ($i=0; $i<$archamt; $i++) {
        $archdata = mysqli_fetch_array($archres);
        $archarray[] = array (
            0 => $archdata[0],
            1 => $archdata[1],
            2 => $archdata[2],
            3 => $archdata[3],
            4 => $archdata[4],
            5 => $archdata[5],
            6 => $archdata[6],
            7 => $archdata[7],
            8 => $archdata[8],
        );
    }
?>

Welchen Ordner oder Datei findet er denn dann nicht? versuchst du in den PHP Dateien irgendwelche Ordner/Dateien zu includen?

Ich versuche keine externen Dateien zu includen, deshalb dachte ich, dass er das directory für die Datenbank nicht findet, auf das er zugreifen will, weil dieses nicht in volume1/vHost/ befindet sondern volume1/web/ .
 

MikeZulu

Benutzer
Mitglied seit
04. Mai 2016
Beiträge
101
Punkte für Reaktionen
2
Punkte
24
Versuchs mal mit folgendem Call (PHP 7.x):

$conn = new mysqli($dbHost, $dbUser, $dbPswd, $dbName, $dbPort)

Ich gehe davon aus, dass der entsprechende DB-User mit dem korrekten Kennwort in MaiaDB definiert ist.

Für MariaDB 10 verwende ich ich 3307
 

Andreas_J

Benutzer
Mitglied seit
08. Apr 2020
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hi MikeZulu

Ich habe den Call mal zu deiner Version geändert und die Parameter angepasst. Es gibt mir stets den gleichen Fehler:
Warning: mysqli::__construct(): (HY000/2002): No such file or directory in /volume1/vHost/php/initialfetch.php on line 8

Ich gehe davon aus, dass der entsprechende DB-User mit dem korrekten Kennwort in MaiaDB definiert ist.
Ja, dem User root ist das entsprechende PW zugewiesen.

Den Port habe ich in der Zwischenzeit in der MariaDB 10 Konfiguration ändern können und habe den auf 3306 setzen können.
 

Blackway

Benutzer
Mitglied seit
07. Nov 2018
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Hatte das gleiche Problem und bei mir hat geholfen, 127.0.0.1 anstelle von localhost zu benutzen.
 

Andreas_J

Benutzer
Mitglied seit
08. Apr 2020
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo Blackway,

vielen Dank für deinen Input! Ich habe das Problem gestern wieder versucht zu fixen und bin dann zufällig wieder auf den Post hier gestossen ^^
Anstelle von localhost die 127.0.0.1 zu nutzen hat geholfen :)

Gruss,
Andreas
 

Heaven1976

Benutzer
Mitglied seit
25. Nov 2018
Beiträge
124
Punkte für Reaktionen
0
Punkte
16
hat mich auch gewundert wieso man 127.0.0.1 eintragen muss wieso geht das nicht wie üblich über localhost oder über die IP die ich der DS zugeteilt habe?
Wo ist da das Problem?
 

Lux007

Benutzer
Mitglied seit
08. Aug 2016
Beiträge
116
Punkte für Reaktionen
2
Punkte
18
Hallo!

Seit PHP 7.x wird bei der Angabe "localhost" die Datenbank über die Socket-Verbindung versucht und nicht über TCP/IP.

Wenn der Pfad in den PHP-Variablen nicht gesetzt ist oder nicht passt, kommt keine Verbindung.

In den WebStation muss der Parameter bei den verwendeten PHP-Einstellungen für "mysqli.default_socket" richtig gesetzt sein.

Gruß
Lux007
 

Heaven1976

Benutzer
Mitglied seit
25. Nov 2018
Beiträge
124
Punkte für Reaktionen
0
Punkte
16
steht bei mir als parameter: /run/mysqld/mysqld.sock
was aber hat das zu tun wie man sich mit phpmyadmin oder anderen scripten an mysql anmeldet?
 
Zuletzt bearbeitet von einem Moderator:

Lux007

Benutzer
Mitglied seit
08. Aug 2016
Beiträge
116
Punkte für Reaktionen
2
Punkte
18
Hallo!
In der Weboberfläche der DS unter z.B. "MariaDB 10" steht der richtige Pfad:

mariadb10.JPG

Damit müsste (bei mir und wohl vielen anderen auch) der Pfad für MariaDB 10 in mysqli.default_socket = /run/mysqld/mysqld10.sock lauten. Dieses wird aber in der Webstation nicht automatisch eingestellt. Der Standard-Pfad gilt im aktuellen DS für MariaDB 5, welche kaum noch genutzt wird.

Gruß
Lux007
 

Heaven1976

Benutzer
Mitglied seit
25. Nov 2018
Beiträge
124
Punkte für Reaktionen
0
Punkte
16
Joa sieht bei mir auch so aus nur das ich damals den port auf 3306 wieder geändert habe den standard port von mysql.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat