Mit Hilfe von KI erstellt...
Hallo Peter,
deine Interpretation der Fehlermeldung ist ein verbreitetes Missverständnis, aber die Datei fehlt nicht. Die Angaben file und trace bei einer PHP-Exception zeigen immer die Stelle im Code, an der der Fehler ausgelöst bzw. abgefangen wurde, das ist völlig normal und unabhängig davon, worum es inhaltlich geht. Die eigentliche Fehlermeldung steckt in #message: "No such file or directory" zusammen mit #code: 2002, und das ist ein sehr bekannter, klassischer MySQL-Verbindungsfehler, kein PHP-Dateisystemproblem.
Fehlercode 2002 bedeutet konkret: "Kann keine Verbindung zum lokalen MySQL-Server über den Socket herstellen." Das passiert, wenn deine configuration.php als Datenbank-Host localhost einträgt, denn bei "localhost" verwenden MySQL-Clients standardmäßig eine Unix-Socket-Datei statt einer normalen Netzwerkverbindung, und der Pfad zu dieser Socket-Datei steckt in der jeweiligen php.ini.
Der entscheidende Punkt bei dir: Der PHP-Prozess, der deine Website über den Webserver ausliefert, und der PHP-Interpreter, den du per SSH über die Kommandozeile aufrufst, nutzen häufig zwei unterschiedliche php.ini-Dateien, mit unterschiedlich konfiguriertem oder ganz fehlendem Socket-Pfad. Das erklärt, warum die Seite im Browser normal läuft, das CLI aber genau diesen Fehler wirft.
Die gängige, meist zuverlässigste Lösung: Trag in deiner configuration.php statt $host = 'localhost'; stattdessen $host = '127.0.0.1'; ein. Das erzwingt eine normale TCP/IP-Verbindung anstelle des Sockets und umgeht damit das ganze Problem unterschiedlicher Socket-Pfade. Das solltest du vorsichtshalber erst auf einer Kopie oder nach einem Backup testen, auch wenn diese Änderung in aller Regel unproblematisch ist.
Falls 127.0.0.1 aus irgendeinem Grund bei dir nicht funktioniert oder gesperrt ist, wäre die Alternative, deinen Hoster (Metanet.ch) nach dem korrekten MySQL-Socket-Pfad für die CLI-PHP-Umgebung zu fragen und diesen explizit in der CLI-php.ini unter mysqli.default_socket einzutragen.