Lösung: Suchen Sie das Thinkphp3.2.3-Handbuch. Der Inhalt lautet wie folgt!
Im Gegensatz zur standardmäßigen Ausnahmebehandlung von PHP gibt ThinkPHP keine einfache Fehlermeldung aus, sondern eine humanisierte Fehlerseite, wie in der folgenden Abbildung dargestellt:
Spezifische Fehlerinformationen können nur im Debugging-Modus angezeigt werden. Wenn Sie sich im Bereitstellungsmodus befinden, wird möglicherweise ein einfacher Eingabeaufforderungstext angezeigt, z. B.:
Sobald der Debugging-Modus deaktiviert ist, wird nach Auftreten eines Fehlers keine spezifische Fehlermeldung angezeigt. Wenn Sie die spezifische Fehlermeldung weiterhin sehen möchten, können Sie sie wie folgt einstellen:
Eingestellt in ThinkPHP/Conf/convention.php
<code class="hljs php"><span class="hljs-string">'SHOW_ERROR_MSG' => <span class="hljs-keyword">true, <span class="hljs-comment">// 显示错误信息</span></span></span></code>
Wenn Sie versuchen, auf ein Modul oder einen Vorgang zuzugreifen, der im Bereitstellungsmodus nicht vorhanden ist, wird ein 404-Fehler gesendet.
Im Debugging-Modus wird automatisch eine Ausnahme ausgelöst, sobald ein schwerwiegender Fehler im System auftritt. Sie können auch die integrierte E-Methode von ThinkPHP verwenden, um eine Ausnahme manuell auszulösen.
<code class="hljs bash">E(<span class="hljs-string">'新增失败');</span></code>
kann auch Ausnahmecodes unterstützen (Standard ist 0), zum Beispiel:
<code class="hljs bash">E(<span class="hljs-string">'信息录入错误',<span class="hljs-number">25);</span></span></code>
Sie können auch das Schlüsselwort throw verwenden, um eine Ausnahme auszulösen. Die folgende Schreibweise ist äquivalent:
<code class="hljs php"><span class="hljs-keyword">throw <span class="hljs-keyword">new \Think\<span class="hljs-keyword">Exception(<span class="hljs-string">'新增失败');</span></span></span></span></code>
Wir können die Anzeige der Ausnahmeseite anpassen. Die integrierte Ausnahmevorlage des Systems befindet sich in Thinkphp/Tpl/think_exception.tpl
im Systemverzeichnis. Die Anzeige der Ausnahmeseite kann durch Ändern der Systemvorlage geändert werden.
Ändern Sie auch die Standard-Ausnahmevorlagendatei des Systems, indem Sie den Konfigurationsparameter TMPL_EXCEPTION_FILE festlegen, zum Beispiel:
Eingestellt in ThinkPHP/Conf/convention.php
<code class="hljs php"><span class="hljs-string">'TMPL_EXCEPTION_FILE' => APP_PATH.<span class="hljs-string">'/Public/exception.tpl'</span></span></code>
Ausnahmevariablen, die in Ausnahmevorlagen verwendet werden können, sind:
<code class="hljs bash"><span class="hljs-variable">$e[<span class="hljs-string">'file']异常文件名 <span class="hljs-variable">$e[<span class="hljs-string">'line'] 异常发生的文件行数 <span class="hljs-variable">$e[<span class="hljs-string">'message'] 异常信息 <span class="hljs-variable">$e[<span class="hljs-string">'trace'] 异常的详细Trace信息</span></span></span></span></span></span></span></span></code>
Da die Ausnahmevorlage nativen PHP-Code verwendet, kann sie auch die Verwendung beliebiger PHP-Methoden und Systemvariablen unterstützen.
Nachdem eine Ausnahme ausgelöst wurde, wird normalerweise eine bestimmte Fehlermeldung angezeigt. Wenn Sie nicht möchten, dass der Benutzer die spezifische Fehlermeldung sieht, können Sie beispielsweise die Anzeige der Fehlermeldung deaktivieren und eine einheitliche Fehlermeldung festlegen :
Eingestellt in ThinkPHP/Conf/convention.php
<code class="hljs php"><span class="hljs-string">'SHOW_ERROR_MSG' => <span class="hljs-keyword">false, <span class="hljs-string">'ERROR_MESSAGE' => <span class="hljs-string">'发生错误!'</span></span></span></span></code>
Nach der Einstellung wird auf allen Ausnahmeseiten nur die Meldung „Ein Fehler ist aufgetreten!“ angezeigt, die spezifischen Fehlerinformationen können jedoch weiterhin in der Protokolldatei angezeigt werden.
Standardmäßig aktiviert der Debugging-Modus die Anzeige von Fehlermeldungen und der Bereitstellungsmodus schaltet die Anzeige von Fehlermeldungen aus.
Eine andere Möglichkeit besteht darin, den Parameter ERROR_PAGE so zu konfigurieren, dass alle Ausnahmen und Fehler auf eine einheitliche Seite verwiesen werden, um zu vermeiden, dass Benutzer Ausnahmeinformationen sehen. Dies wird normalerweise im Bereitstellungsmodus verwendet. Der Parameter ERROR_PAGE muss eine vollständige URL-Adresse sein, zum Beispiel:
Eingestellt in ThinkPHP/Conf/convention.php
<code class="hljs php"><span class="hljs-string">'ERROR_PAGE' =><span class="hljs-string">'/Public/error.html' 系统默认为空</span></span></code>
Wenn es nicht im aktuellen Domänennamen enthalten ist, können Sie auch den Domänennamen angeben:
<code class="hljs scala"><span class="hljs-symbol">'ERROR_PAGE' =><span class="hljs-symbol">'http:<span class="hljs-comment">//www.myDomain.com/Public/error.html'</span></span></span></code>
Beachten Sie, dass die Seite, auf die ERROR_PAGE verweist, keine abnormalen Vorlagenvariablen mehr verwenden kann.