PHP PDO funktioniert nicht?


08.08.2021, 16:11

######### GELÖST ##########

Bei Strato ist es nicht möglich, von außerhalb auf Datenbanken zuzugreifen. Deshalb wurde vom Server immer ein Fehler gemeldet.

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Schau im Log nach um was für einen Fehler es sich handelt:

tail -f /var/log/apache2/error.log

das wäre der Standart Logpath.

Woher ich das weiß:Hobby – Programmiere seit 2017 Webapplikationen
gehm1 
Fragesteller
 02.08.2021, 22:10

dieser pfad existiert bei mir leider nicht. Ich komme nur bis /var/log

0
MrCommandBlock  05.08.2021, 20:54
@gehm1

was hast du denn für einen Webserver? bzw wo hostest du? Und was ist die Serversoftware?

Apache2 oder nginx?

1
gehm1 
Fragesteller
 06.08.2021, 18:48
@MrCommandBlock

Mein Server wird von Strato gehostet und läuft lauf phpinfo() mit Apache/2.4.48 (Unix)

0
MrCommandBlock  06.08.2021, 19:54
@gehm1

unter phpinfo findest du auch den Pfad zum error.log.

Du kannst ja einfach mal mit Strg+F nach "error.log" suchen, und dann in meinem Befehl den Pfad ersetzen.

1
gehm1 
Fragesteller
 06.08.2021, 20:10
@MrCommandBlock

irgendetwas ist komisch, weil ich finde beim Suchen gar kein error.log

hinter dem eintrag 'error_log' steht auch 'no value'

0
gehm1 
Fragesteller
 06.08.2021, 20:14
@gehm1

und hinter 'log_errors' steht noch 'On'

0
MrCommandBlock  06.08.2021, 21:46
@gehm1

das ist weird... strato hat doch bestimmt einen Support, dort kannst du ja mal nachfragen.

1
gehm1 
Fragesteller
 06.08.2021, 23:19
@MrCommandBlock

also mittlerweile habe ich eine Anleitung von Strato gefunden. Ich habe jetzt ein Logfile, in dass ich mit error_log(); auch Meldungen speichern kann. Nur werden immer noch nicht die Fehler zu meinem eigentlichen Problem angezeigt. Muss ich dazu noch irgendetwas einstellen?

0
gehm1 
Fragesteller
 06.08.2021, 23:22
@gehm1

Bei phpinfo() wird der Pfad dieser Datei jetzt auch unter 'error_log' angezeigt.

0
gehm1 
Fragesteller
 06.08.2021, 23:28
@gehm1

Mittlerweile zeigt es den Pfand irgendwie doch nicht mehr an.....

0
MrCommandBlock  06.08.2021, 23:33
@gehm1

du könntest versuchen anstatt das logfile auszulesen die errors auf der Webseite auszugeben...

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

es kann aber gut sein, das du dann die Seite mit dem Firefox besuchen musst, damit du den Fehler siehst. (ich glaube chrome zeigt eine eigene Meldung an, welche nicht den echten Fehler enthält bei einer 500 Server antwort)

1
gehm1 
Fragesteller
 07.08.2021, 11:53
@MrCommandBlock

Danke! Jetzt hat es die Fehler ausgegeben.

Hier die Fehlermeldung:


Fatal error: Uncaught PDOException: SQLSTATE[00000] [2004] Can't create TCP/IP socket (0) in /mnt/web412/b2/37/51641537/htdocs/meinpfad/pdo.php:14
Stack trace:
#0 /mnt/web412/b2/37/51641537/htdocs/meinpfad/pdo.php(14): PDO->__construct()
#1 {main}
  thrown in /mnt/web412/b2/37/51641537/htdocs/meinpfad/pdo.php on line 14

Vielleicht weißt du was das Problem ist....

Hier nochmal der aktuelle Code:

<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$host = "rdbms.strato.de";
$dbname = "###########";
$user = "###########";
$pass = "###########";

$pdo = new PDO('mysql:host='.$host.';dbname='.$dbname, $user, $pass,
    array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES "UTF8"'
    ) );

und Firefox benutze ich sowieso ;)

0
gehm1 
Fragesteller
 07.08.2021, 13:18
@MrCommandBlock

Danke für deine Hilfe!! :)

dann werde ich mal den Support kontaktieren.

0

Da du konstant leere Seiten bekommst. Vermute ich, dass du Einträge in deinem Logfile hast, die eine Fehlermeldung enthalten.

Daher schau mal in dein PHP-Logfile, zum Zeitpunkt der Ausführung.

gehm1 
Fragesteller
 04.07.2021, 16:07

Ah danke, gute Idee. Aber weißt du, wo ich diesen Logfile finde? Ich habe diese Funktion noch nie benutzt.

0
elmex7  04.07.2021, 16:21
@gehm1

Wo das log file ist - das verrät dir die php.ini bzw. phpinfo()

2
Tabatholu  04.07.2021, 16:29
@gehm1

Es wäre auch hilfreich, wenn du dein System und Versionsnummer sagst, das unterscheidet sich durchaus. Der Vorschlag mit phpinfo() sollte dir jedenfalls schon mal diese Antwort zeigen.

1
gehm1 
Fragesteller
 06.08.2021, 18:49
@Tabatholu

hi, sorry für die späte antwort, aber er läuft mit Apache/2.4.48 (Unix)

0
Tabatholu  07.08.2021, 15:58
@gehm1

und? Hast du alles gefunden? war phpinfo hilfreich? Was sagt das Logfile?

1
gehm1 
Fragesteller
 08.08.2021, 16:07
@Tabatholu

also ich habe das Problem so gelöst, dass ich die Fehler auf der Website ausgebe (siehe Antwort von @MrCommandBlock)

und gerade eben hatte ich noch ned spontanen Einfall, den Pfad zur selbst erstellten error.log per ini_set() festzulegen. Das hat jetzt auch geklappt.

1

Lass dir doch mal $pdo über var_dump ausgeben.

Woher ich das weiß:Berufserfahrung – seit vielen Jahren in Java-Entwicklung tätig
gehm1 
Fragesteller
 04.07.2021, 15:42

<?

$pdo = new PDO('mysql:host=######;dbname=#######', '#########', '#########);

var_dump($pdo);

Wenn ich das so ausführe, kommt wieder eine leere Seite

0
derFabi95  04.07.2021, 15:43
@gehm1

Mit welcher PHP-Version führst du die Datei aus?

0

Sind denn Short Tags aktiviert? sonst braucht es <?php statt nur <?

Und ist die entsprechende PDO Extension denn geladen?

gehm1 
Fragesteller
 04.07.2021, 16:45

Ohne Short Tags kommt das gleiche Ergebnis wie vorher

und dass die PDO-Extension geladen ist, müsste ich doch eigentlich daran erkennen, dass class_exists("PDO") true zurückgibt, oder?

0

Warum führst du die Zeilen nicht einzeln aus?

gehm1 
Fragesteller
 04.07.2021, 15:41

Habe ich schon gemacht. Das, was ich gepostet habe, war nur eine Art Testcode, also eigentlich ziemlich unnnötig, das mit zu posten haha

aber ich habe mit class_exists herausgefunden, dass die Klasse PDO bei mir überhaupt vorhanden ist

0