Manchmal erhalte ich einen Datenbankfehler wie
Warnung: mysql_connect () [function.mysql-connect]: Zugriff verweigert für Benutzer 'test'@'101.190.193.83' (mit Passwort: YES)
Konnte nicht verbinden: Zugriff verweigert für Benutzer 'test'@'101.190.193.83' (mit Passwort: JA) "
Aber wirklich, es gibt keine Änderung im Passwort.
Gibt es eine Möglichkeit, diesen Fehler in einer Protokolldatei zu erfassen und eine nette Nachricht auf dem Bildschirm anzuzeigen, wie "Serverfehler. Bitte versuchen Sie es später erneut."
Wenn Sie nicht möchten, dass PHP die Warnung anzeigt, müssen Sie den Operator "@" verwenden
%Vor%Sie können auch display_errors auf 0 in Ihrem% setzen. co_de% Datei in Produktion
Sie können auch PDO für die Verbindung zu MySQL in Erwägung ziehen, da es Ausnahmen als Standard verwendet Fehler melden,
%Vor%Gibt es eine Möglichkeit, diese Fehler in der Protokolldatei zu erfassen ...?
Ja. Alle PHP-Fehler und Warnungen werden in die Fehlerprotokolldatei des Webservers geschrieben. Sie müssen also nichts weiter tun - es wird bereits ausgeführt.
Um den zweiten Teil Ihrer Frage zu beantworten, wenn Sie nicht möchten, dass die rohe Fehlermeldung auf dem Bildschirm angezeigt wird, können Sie dies auf zwei Arten verhindern:
Verwenden Sie das Symbol% co_de% vor Ihrem Funktionsaufruf - zB @
. Dadurch wird die Fehlerberichterstattung nur für diesen bestimmten Funktionsaufruf deaktiviert. Es wird allgemein als eine schlechte Idee angesehen, diese Technik zu oft zu verwenden, aber es ist gelegentlich legitim.
Die bessere Option könnte darin bestehen, das globale Fehlermeldungs-Flag entweder in Ihrer $db = @mysql_connect(...);
, in Ihrer lokalen PHP.ini
-Datei oder in .htaccess
innerhalb des Programms zu deaktivieren.
Normalerweise sollten Fehlerberichte auf der Webseite nur während der Entwicklung der Website verwendet werden. Sobald die Website online geschaltet wird, sollten Sie die Fehlerberichterstattung aktivieren, damit keine PHP-Fehler in Ihrem sorgfältig erstellten Seitenlayout vor Ihren Kunden auftreten. Alle auftretenden Fehler werden weiterhin in das Fehlerprotokoll des Servers geschrieben, aber nicht auf der Seite angezeigt.
Bei MySQL-Fehlern, wie dem, den Sie haben, können Sie den Fehler selbst innerhalb des Programms mit der ini_set()
-Funktion erreichen. Dies wird die Details des letzten aufgetretenen Fehlers enthalten, so dass Sie programmatisch danach suchen und eine sinnvolle Fehlermeldung melden können.
Quelle: Ссылка
Hier ist ein Beispielcode für die Datenbankverbindung in PHP:
%Vor%Tags und Links php mysql error-handling mysql-error-1045