[php] PHP 오류를 표시하려면 어떻게합니까?

PHP ini 파일 ( php.ini)을 확인했으며 display_errors설정되었으며 오류보고 기능도 E_ALL있습니다. Apache 웹 서버를 다시 시작했습니다.

이 줄을 스크립트 맨 위에 놓았으며 간단한 구문 분석 오류도 잡지 않습니다. 예를 들어, 변수를 a로 선언 "$"하고 문을 닫지 않습니다 ";". 그러나 모든 스크립트는 이러한 오류에 빈 페이지를 표시하지만 실제로 브라우저 출력에서 오류 를 보고 싶습니다 .

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

해야 할 일은 무엇입니까?



답변

이것은 항상 나를 위해 작동합니다 :

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

그러나 이렇게해도 PHP가 구문 분석 오류를 표시하지는 않습니다. 이러한 오류를 표시하는 유일한 방법은 다음 줄로 php.ini를 수정하는 것입니다.

display_errors = on

에 액세스 할 수없는 php.ini경우이 줄을 입력해도 효과 .htaccess가있을 수 있습니다.

php_flag display_errors 1


답변

실제로 실행하기 전에 파일을 구문 분석하기 때문에 런타임에 오류 출력을 활성화하면 구문 분석 오류를 포착 할 수 없습니다 (이 과정에서 오류가 발생하면 아무것도 실행되지 않습니다). display_errors가 켜져 있고 적절한 error_reporting 수준이 사용되도록 실제 서버 구성을 변경해야합니다. php.ini에 액세스 할 수없는 경우 서버에 따라 .htaccess 또는 이와 유사한 것을 사용할 수 있습니다.

이 질문 은 추가 정보를 제공 할 수 있습니다.


답변

php.ini 내부 :

display_errors = on

그런 다음 웹 서버를 다시 시작하십시오.


답변

모든 오류를 표시하려면 다음을 수행하십시오.

1. 브라우저에서 호출하는 PHP 스크립트에 다음 줄이 있습니다 (일반적으로 index.php).

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

2. (a)이 스크립트에 구문 오류가 없는지 확인하십시오

-또는-

2 (b)의 설정 display_errors = Onphp.ini

그렇지 않으면, 그 두 줄을 실행할 수 없습니다!

명령 줄에서 다음을 실행하여 스크립트에서 구문 오류를 확인할 수 있습니다.

php -l index.php

당신이 경우 포함 다른 PHP 스크립트에서 스크립트를 그것은 에서 구문 오류가 표시 포함 된 스크립트를. 예를 들면 다음과 같습니다.

index.php

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

// Any syntax errors here will result in a blank screen in the browser

include 'my_script.php';

my_script.php

adjfkj // This syntax error will be displayed in the browser


답변

일부 웹 호스팅 제공 업체를 통해 .htaccess파일 에서 PHP 매개 변수를 변경할 수 있습니다 .

다음 줄을 추가 할 수 있습니다.

php_value display_errors 1

나는 당신과 같은 문제가 있었고이 솔루션은 그것을 고쳤다.


답변

“오류보고”또는 “디스플레이 오류”에 대한 모든 설정이 PHP 7에서 작동하지 않는 것 같습니다. 이는 오류 처리가 변경 되었기 때문입니다. 대신 이것을 시도하십시오 :

try{
     // Your code
}
catch(Error $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

또는 한 번에 예외와 오류를 포착하려면 (PHP 5와 호환되지 않습니다) :

try{
     // Your code
}
catch(Throwable $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}


답변

이것은 작동합니다 :

<?php
     error_reporting(E_ALL);
     ini_set('display_errors', 1);
?>