해결책: Thinkphp3.2.3 매뉴얼을 찾아보세요. 내용은 다음과 같습니다!
PHP의 기본 예외 처리와 달리 ThinkPHP는 아래 그림과 같이 단순한 오류 메시지가 아닌 인간화된 오류 페이지를 표시합니다.
특정 오류 정보는 디버깅 모드에서만 표시될 수 있습니다. 배포 모드에 있는 경우 다음과 같은 간단한 프롬프트 텍스트가 표시될 수 있습니다.
디버깅 모드를 끄면 오류가 발생한 후에도 특정 오류 메시지가 표시되지 않습니다. 그래도 특정 오류 메시지를 보려면 다음과 같이 설정하면 됩니다.
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>
배포 모드에서 존재하지 않는 모듈이나 작업에 접근하려고 하면 404 오류가 전송됩니다.
디버깅 모드에서는 시스템에 심각한 오류가 발생하면 자동으로 예외가 발생합니다. ThinkPHP에 내장된 E 메소드를 사용하여 수동으로 예외를 발생시킬 수도 있습니다.
<code class="hljs bash">E(<span class="hljs-string">'新增失败');</span></code>
은 예외 코드(기본값은 0)도 지원할 수 있습니다. 예:
<code class="hljs bash">E(<span class="hljs-string">'信息录入错误',<span class="hljs-number">25);</span></span></code>
throw 키워드를 사용하여 예외를 발생시킬 수도 있습니다.
<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>
예외 페이지 표시를 사용자 정의할 수 있습니다. 시스템에 내장된 예외 템플릿은 시스템 디렉토리의 Thinkphp/Tpl/think_exception.tpl
에 있습니다. 예외 페이지 표시는 시스템 템플릿을 수정하여 수정할 수 있습니다.
또한 TMPL_EXCEPTION_FILE 구성 매개변수를 설정하여 시스템 기본 예외 템플릿 파일을 수정합니다. 예:
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>
예외 템플릿에 사용할 수 있는 예외 변수는 다음과 같습니다.
<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>
예외 템플릿은 기본 PHP 코드를 사용하므로 모든 PHP 메서드 및 시스템 변수의 사용도 지원할 수 있습니다.
예외가 발생한 후 일반적으로 특정 오류 메시지가 표시됩니다. 사용자에게 특정 오류 메시지가 표시되지 않도록 하려면 오류 메시지 표시를 끄고 통합된 오류 메시지를 설정할 수 있습니다. :
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>
설정 후 모든 예외 페이지에는 "오류가 발생했습니다!"라는 메시지만 표시되지만, 구체적인 오류 정보는 로그 파일에서 계속 확인할 수 있습니다.
시스템 기본적으로 디버깅 모드에서는 오류 메시지 표시가 켜지고 배포 모드에서는 오류 메시지 표시가 꺼집니다.
또 다른 방법은 사용자가 예외 정보를 보지 못하도록 모든 예외와 오류를 통합 페이지로 가리키도록 ERROR_PAGE 매개변수를 구성하는 것입니다. 이는 일반적으로 배포 모드에서 사용됩니다. ERROR_PAGE 매개변수는 완전한 URL 주소여야 합니다. 예:
ThinkPHP/Conf/convention.php에 설정
<code class="hljs php"><span class="hljs-string">'ERROR_PAGE' =><span class="hljs-string">'/Public/error.html' 系统默认为空</span></span></code>
현재 도메인 이름에 없으면 다음과 같이 도메인 이름을 지정할 수도 있습니다.
<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>
ERROR_PAGE가 가리키는 페이지는 더 이상 비정상적인 템플릿 변수를 사용할 수 없습니다.