질문자 :Abs
내 PHP ini 파일( php.ini
)을 확인했고 display_errors
가 설정되었으며 오류 보고도 E_ALL
입니다. Apache 웹 서버를 다시 시작했습니다.
스크립트 맨 위에 이 줄을 추가했는데 간단한 구문 분석 오류도 잡아내지 못했습니다. 예를 들어, "$"
";"
문을 닫지 않습니다. . 그러나 내 모든 스크립트는 이러한 오류에 대해 빈 페이지를 표시하지만 실제로 내 브라우저 출력에서 오류를 보고 싶습니다.
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
Fancy John런타임에 오류 출력을 활성화할 때 구문 분석 오류를 포착할 수 없습니다. 왜냐하면 실제로 실행하기 전에 파일을 구문 분석하기 때문입니다(그리고 이 동안 오류가 발생하기 때문에 아무 것도 실행하지 않음). display_errors가 켜져 있고 적절한 error_reporting 수준이 사용되도록 실제 서버 구성을 변경해야 합니다. php.ini에 액세스할 수 없는 경우 서버에 따라 .htaccess 또는 이와 유사한 것을 사용할 수 있습니다.
이 질문 은 추가 정보를 제공할 수 있습니다.
Michael Madsenphp.ini 내부 :
display_errors = on
그런 다음 웹 서버를 다시 시작하십시오.
user1803477모든 오류를 표시하려면 다음을 수행해야 합니다.
1. 브라우저에서 호출하는 PHP 스크립트(일반적으로 index.php
)에 다음 행이 있습니다.
error_reporting(E_ALL); ini_set('display_errors', '1');
2.(a) 이 스크립트에 구문 오류가 없는지 확인하십시오.
-또는-
2.(b) php.ini
에서 display_errors = On
그렇지 않으면 두 줄을 실행할 수도 없습니다!
명령줄에서 다음을 실행하여 스크립트의 구문 오류를 확인할 수 있습니다.
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
andre.htaccess
파일에서 PHP 매개변수를 변경할 수 있습니다.
다음 줄을 추가할 수 있습니다.
php_value display_errors 1
나는 당신과 같은 문제가 있었고이 솔루션으로 해결되었습니다.
Kalhua"오류 보고" 또는 "오류 표시"에 대한 모든 설정이 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']; }
Frank Forte이것은 작동합니다:
<?php error_reporting(E_ALL); ini_set('display_errors', 1); ?>
Mahendra Jella사용하다:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
이것이 가장 좋은 작성 방법이지만 구문 오류는 빈 출력을 제공하므로 콘솔을 사용하여 구문 오류를 확인하십시오. PHP 코드를 디버그하는 가장 좋은 방법은 콘솔을 사용하는 것입니다. 다음을 실행하십시오.
php -l phpfilename.php
Abhijit Jagtapindex.php 파일에서 이것을 설정하십시오:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
Sumit GuptaPHP 파일이 있는 폴더에 php.ini 라는 파일을 만듭니다.
php.ini 안에 다음 코드를 추가합니다(코드를 보여주는 간단한 오류가 발생합니다).
display_errors = on display_startup_errors = on
NavyaKumar현재 PHP 7을 실행하고 있으므로 여기에 제공된 답변은 더 이상 정확하지 않습니다. 여전히 괜찮은 것은 Frank Forte 가 PHP 7에 대해 이야기하는 것뿐입니다.
다른 한편으로는 try/catch로 오류를 잡으려고 하는 것보다 트릭을 사용할 수 있습니다. include를 사용하세요.
다음은 세 가지 코드입니다.
파일: tst1.php
<?php error_reporting(E_ALL); ini_set('display_errors', 'On'); // Missing " and ; echo "Testing ?>
PHP 7에서 이것을 실행하면 아무 것도 표시되지 않습니다.
이제 다음을 시도하십시오.
파일: tst2.php
<?php error_reporting(E_ALL); ini_set('display_errors', 'On'); include ("tst3.php"); ?>
파일: tst3.php
<?php // Missing " and ; echo "Testing ?>
이제 오류 보고를 설정하는 tst2를 실행한 다음 tst3을 포함합니다. 당신은 볼 것입니다 :
구문 분석 오류: 구문 오류, 예기치 않은 파일 끝, 4행의 tst3.php에서 변수(T_VARIABLE) 또는 ${(T_DOLLAR_OPEN_CURLY_BRACES) 또는 {$(T_CURLY_OPEN)이 필요합니다.
Peter위의 모든 답변을 따랐음에도 불구하고(또는 php.ini 파일을 편집할 수 없음) 여전히 오류 메시지가 표시되지 않으면 오류 보고를 활성화하는 새 PHP 파일을 만든 다음 문제 파일을 포함해 보십시오. 예:
error_reporting(E_ALL); ini_set('display_errors', 1); require_once('problem_file.php');
php.ini
파일에 모든 것이 제대로 설정되어 있음에도 불구하고 이것이 네임스페이스 오류를 잡을 수 있는 유일한 방법이었습니다. 내 정확한 시나리오는 다음과 같습니다.
//file1.php namespace a\b; class x { ... } //file2.php namespace c\d; use c\d\x; //Dies because it's not sure which 'x' class to use class x { ... }
jxmallett나는 보통 일반 PHP 프로젝트에서 다음 코드를 사용합니다.
if(!defined('ENVIRONMENT')){ define('ENVIRONMENT', 'DEVELOPMENT'); } $base_url = null; if (defined('ENVIRONMENT')) { switch (ENVIRONMENT) { case 'DEVELOPMENT': $base_url = 'http://localhost/product/'; ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL|E_STRICT); break; case 'PRODUCTION': $base_url = 'Production URL'; /* https://google.com */ error_reporting(0); /* Mechanism to log errors */ break; default: exit('The application environment is not set correctly.'); } }
Channaveer Hakariphp.ini
또는 .htaccess
를 통해 설정을 수정할 수 없는 상황에 처했다면 PHP 스크립트에 구문 분석 오류가 포함되어 있을 때 오류가 표시되지 않는 것입니다. 그런 다음 다음과 같이 명령줄에서 파일을 linting하도록 해결해야 합니다.
find . -name '*.php' -type f -print0 | xargs -0 -n1 -P8 php -l | grep -v "No syntax errors"
php.ini
또는 .htaccess
를 통한 값 변경을 허용하지 않으면 ini_set
통한 값 변경도 허용하지 않을 수 있습니다. 다음 PHP 스크립트로 확인할 수 있습니다.
<?php if( !ini_set( 'display_errors', 1 ) ) { echo "display_errors cannot be set."; } else { echo "changing display_errors via script is possible."; }
chiborg아래와 같이 할 수 있습니다.
기본 색인 파일에서 아래 매개변수를 설정하십시오.
ini_set('display_errors', 1); ini_set('display_startup_errors', 1);
그런 다음 요구 사항에 따라 표시할 항목을 선택할 수 있습니다.
모든 오류, 경고 및 주의 사항:
error_reporting(E_ALL); OR error_reporting(-1);
모든 오류의 경우:
error_reporting(E_ERROR);
모든 경고:
error_reporting(E_WARNING);
모든 알림:
error_reporting(E_NOTICE);
자세한 내용은 여기를 확인하십시오.
Binit Ghetiya추가 디버그 정보를 제공할 수 있는 사용자 지정 오류 처리기를 추가할 수 있습니다. 또한 이메일을 통해 정보를 보내도록 설정할 수 있습니다.
function ERR_HANDLER($errno, $errstr, $errfile, $errline){ $msg = "<b>Something bad happened.</b> [$errno] $errstr <br><br> <b>File:</b> $errfile <br> <b>Line:</b> $errline <br> <pre>".json_encode(debug_backtrace(), JSON_PRETTY_PRINT)."</pre> <br>"; echo $msg; return false; } function EXC_HANDLER($exception){ ERR_HANDLER(0, $exception->getMessage(), $exception->getFile(), $exception->getLine()); } function shutDownFunction() { $error = error_get_last(); if ($error["type"] == 1) { ERR_HANDLER($error["type"], $error["message"], $error["file"], $error["line"]); } } set_error_handler ("ERR_HANDLER", E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED); register_shutdown_function("shutdownFunction"); set_exception_handler("EXC_HANDLER");
lintabá맨 위에 있는 이 코드는 다음과 같이 작동해야 합니다.
error_reporting(E_ALL);
그러나 파일에서 전화의 코드를 편집해 보십시오.
error_reporting =on
Joel Wembo빠른 디버깅인 경우 사용할 수 있는 최고의/쉬운/빠른 솔루션은 예외를 잡는 것으로 코드를 둘러싸는 것입니다. 그것이 내가 생산에서 무언가를 빠르게 확인하고 싶을 때 하는 일입니다.
try { // Page code } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; }
Xakiru <?php // Turn off error reporting error_reporting(0); // Report runtime errors error_reporting(E_ERROR | E_WARNING | E_PARSE); // Report all errors error_reporting(E_ALL); // Same as error_reporting(E_ALL); ini_set("error_reporting", E_ALL); // Report all errors except E_NOTICE error_reporting(E_ALL & ~E_NOTICE); ?>
사이트가 php.ini
파일에서 display_errors를 비활성화해야 합니다. 그러나 개발 환경의 경우 문제 해결을 위해 display_errors를 활성화할 수 있습니다.
pardeep그냥 써:
error_reporting(-1);
jewelhuqphp.ini 파일을 변경하고 다음을 추가하여 이 작업을 수행할 수 있습니다.
display_errors = on display_startup_errors = on
또는 이것이 항상 나를 위해 작동하므로 다음 코드를 사용할 수도 있습니다.
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
Muhammad Adeel MalikXdebug가 설치되어 있으면 다음을 설정하여 모든 설정을 무시할 수 있습니다.
xdebug.force_display_errors = 1; xdebug.force_error_reporting = -1;
force_display_errors
유형: int, 기본값: 0, Xdebug에 도입됨 >= 2.3 이 설정이 1로 설정되면 PHP의 display_errors 설정에 관계없이 오류가 항상 표시됩니다.
force_error_reporting
유형: int, 기본값: 0, Xdebug에 도입됨 >= 2.3 이 설정은 error_reporting과 같은 비트 마스크입니다. 이 비트마스크는 어떤 오류가 표시되어야 하는지 결정하기 위해 error_reporting으로 표시되는 비트마스크와 논리적으로 OR됩니다. 이 설정은 php.ini에서만 만들 수 있으며 응용 프로그램이 ini_set()을 사용하여 수행하는 작업에 관계없이 특정 오류가 표시되지 않도록 할 수 있습니다.
Peter Haberkorn다음 코드를 사용할 수 있습니다.
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
user8031209E_NOTICE를 제외한 모든 오류 보고
error_reporting(E_ALL & ~E_NOTICE);
모든 PHP 오류 표시
error_reporting(E_ALL); or ini_set('error_reporting', E_ALL);
모든 오류 보고 끄기
error_reporting(0);
Shaikh Nadeem명령줄에 있는 경우 -ddisplay_errors=1
php
를 php.ini
의 설정을 재정의할 수 있습니다.
php -ddisplay_errors=1 script.php
gvlasov간단한 방법을 통해 디스플레이에 PHP 오류를 표시할 수 있습니다. 첫째, 이것을 php.ini 파일의 코드 아래에 넣으십시오.
display_errors = on;
(만약 당신이 php.ini에 접근할 수 없다면, 이 줄을 .htaccess에 넣어도 괜찮을 것입니다):
php_flag display_errors 1
또는 index.php 파일에서 다음 코드를 사용할 수도 있습니다.
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
DevsaifulUnix CLI 에서는 오류만 파일 로 리디렉션하는 것이 매우 실용적입니다.
./script 2> errors.log
스크립트에서 var_dump()
또는 이와 동등한 것을 평소와 같이 사용하십시오(STDOUT 및 STDERR 모두 출력을 수신함). 그러나 로그 파일에만 작성하려면 다음을 수행 하십시오.
fwrite(STDERR, "Debug infos\n"); // Write in errors.log^
그런 다음 다른 셸에서 라이브 변경 사항에 대해 다음을 수행합니다.
tail -f errors.log
또는 단순히
watch cat errors.log
NVRM error_reporting(1); ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL);
이것을 페이지 상단에 넣으십시오.
Kwed코드 상단에 이것을 입력하십시오.
ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL);
그리고 php.ini 파일에 다음을 삽입하십시오.
display_errors = on
작동해야 합니다.
ropehapi출처 : http:www.stackoverflow.com/questions/1053424/how-do-i-get-php-errors-to-display