종종 PHP 스크립트를 실행하고 빈 화면을 다시 보게됩니다. 오류 메시지가 없습니다. 빈 화면입니다. 원인은 단순한 구문 오류 (잘못된 대괄호, 세미콜론 누락) 또는 함수 호출 실패 또는 기타 다른 원인 일 수 있습니다.
무엇이 잘못되었는지 알아내는 것은 매우 어렵습니다. 코드를 주석 처리하고, 어디서나 “echo”문장을 입력하는 등 문제를 좁히려 고합니다. 그러나 더 좋은 방법이 있어야합니다.
Java처럼 PHP가 유용한 오류 메시지를 생성하도록하는 방법이 있습니까?
답변
구문 오류의 경우 php.ini에서 오류 표시를 활성화해야합니다. “고객”이 오류 메시지를보고 싶지 않기 때문에 기본적으로이 기능은 해제되어 있습니다. 이 페이지를 확인 2 개 지침에 대한 자세한 내용은 PHP 문서에서 : error_reporting
와 display_errors
. display_errors
아마도 당신이 바꾸고 싶은 것입니다. php.ini를 수정할 수 없다면, .htaccess 파일에 다음 줄을 추가 할 수도 있습니다 :
php_flag display_errors on
php_value error_reporting 2039
error_reporting
모든 오류를 얻으려면 PHP 버전에 E_ALL 값 (Gumbo에서 언급 한대로)을 사용 하는 것이 좋습니다. 더 많은 정보
3 가지 다른 항목 : (1) 오류가 기록되지 않은 경우를 제외하고 모든 오류가 발생하므로 오류 로그 파일을 확인할 수 있습니다. (2) 다음 두 줄을 추가하면 구문 오류가 아닌 오류를 디버깅하는 데 도움이됩니다.
error_reporting(-1);
ini_set('display_errors', 'On');
(3) 또 다른 옵션은 입력 할 때 PhpEd 와 같은 오류를 검사하는 편집기를 사용하는 것 입니다. PhpEd에는 더 자세한 정보를 제공 할 수있는 디버거도 제공됩니다. PhpEd 디버거는 xdebug와 매우 유사하며 편집기에 직접 통합되므로 하나의 프로그램을 사용하여 모든 작업을 수행 할 수 있습니다.
Cartman의 링크 도 매우 좋습니다 : http://www.ibm.com/developerworks/library/os-debug/
답변
다음은 모든 오류를 활성화합니다.
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
다음 링크도 참조하십시오
답변
다음 코드는 모든 오류를 표시해야합니다.
<?php
// ----------------------------------------------------------------------------------------------------
// - Display Errors
// ----------------------------------------------------------------------------------------------------
ini_set('display_errors', 'On');
ini_set('html_errors', 0);
// ----------------------------------------------------------------------------------------------------
// - Error Reporting
// ----------------------------------------------------------------------------------------------------
error_reporting(-1);
// ----------------------------------------------------------------------------------------------------
// - Shutdown Handler
// ----------------------------------------------------------------------------------------------------
function ShutdownHandler()
{
if(@is_array($error = @error_get_last()))
{
return(@call_user_func_array('ErrorHandler', $error));
};
return(TRUE);
};
register_shutdown_function('ShutdownHandler');
// ----------------------------------------------------------------------------------------------------
// - Error Handler
// ----------------------------------------------------------------------------------------------------
function ErrorHandler($type, $message, $file, $line)
{
$_ERRORS = Array(
0x0001 => 'E_ERROR',
0x0002 => 'E_WARNING',
0x0004 => 'E_PARSE',
0x0008 => 'E_NOTICE',
0x0010 => 'E_CORE_ERROR',
0x0020 => 'E_CORE_WARNING',
0x0040 => 'E_COMPILE_ERROR',
0x0080 => 'E_COMPILE_WARNING',
0x0100 => 'E_USER_ERROR',
0x0200 => 'E_USER_WARNING',
0x0400 => 'E_USER_NOTICE',
0x0800 => 'E_STRICT',
0x1000 => 'E_RECOVERABLE_ERROR',
0x2000 => 'E_DEPRECATED',
0x4000 => 'E_USER_DEPRECATED'
);
if(!@is_string($name = @array_search($type, @array_flip($_ERRORS))))
{
$name = 'E_UNKNOWN';
};
return(print(@sprintf("%s Error in file \xBB%s\xAB at line %d: %s\n", $name, @basename($file), $line, $message)));
};
$old_error_handler = set_error_handler("ErrorHandler");
// other php code
?>
이 코드로 빈 페이지를 생성하는 유일한 방법은 종료 처리기에 오류가있는 경우입니다. 나는 그것을 테스트하지 않고 내 자신의 cms에서 이것을 복사하여 붙여 넣었지만 작동한다고 확신합니다.
답변
오류 및 경고는 보통의 표시 ....\logs\php_error.log
또는 ....\logs\apache_error.log
php.ini 파일 설정에 따라.
또한 유용한 오류는 종종 브라우저로 전송되지만 유효한 HTML이 아니기 때문에 표시되지 않습니다.
따라서 "tail -f
“로그 파일과 빈 화면이 표시되면 IE”view “->”source “메뉴 옵션을 사용하여 원시 출력을보십시오.
답변
디버깅하려는 파일에 다음 줄을 포함시킬 수 있습니다.
error_reporting(E_ALL);
ini_set('display_errors', '1');
이것은 php.ini의 기본 설정보다 우선합니다. PHP는 오류를 로그에보고합니다.
답변
PHP 설정
php.ini의 두 항목 은 오류 출력을 나타냅니다.
에서 생산 , display_errors
일반적으로 설정됩니다 Off
(생산 현장에서 에러 표시가 일반적으로 바람직하지 않기 때문에, 좋은 일 어느!).
그러나 개발 에서는 On
오류가 표시되도록 로 설정해야합니다 . 확인하세요 !
error_reporting
(PHP 5.3부터)는 기본적으로 설정되어 있습니다 E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
(즉, 공지, 엄격한 표준 및 사용 중단 통지를 제외한 모든 것이 표시됨). 확실하지 않은 경우 모든 오류 E_ALL
를 표시 하도록 설정하십시오 . 검사 !
우와 우와! 확인 안함! 내 php.ini를 변경할 수 없습니다!
부끄러운 일입니다. 일반적으로 공유 호스트는 php.ini 파일을 변경할 수 없으므로 해당 옵션을 사용할 수 없습니다. 그러나 두려워하지 마십시오! 우리는 다른 옵션이 있습니다 !
런타임 구성
원하는 스크립트에서 런타임에 php.ini 항목을 변경할 수 있습니다! 즉, 스크립트가 실행될 때 실행됩니다! 단!
error_reporting(E_ALL);
ini_set("display_errors", "On");
이 두 줄은 위와 같이 php.ini 항목을 변경하는 것과 동일한 효과를 나타냅니다! 대박!
여전히 빈 페이지 / 500 오류가 발생합니다!
그것은 스크립트가 실행되지 않았 음을 의미합니다! 일반적으로 구문 오류가있을 때 발생합니다!
구문 오류로 인해 스크립트가 런타임에 도달하지도 않습니다. 컴파일 타임에 실패합니다 . 즉, 변경하지 않은 경우 오류 표시를 허용하지 않을 수있는 php.ini의 값을 사용합니다.
오류 로그
또한 PHP는 기본적으로 오류를 기록합니다. 공유 호스팅에서는 전용 폴더 또는 문제가되는 스크립트와 같은 폴더에있을 수 있습니다.
php.ini에 액세스 할 수 있으면 error_log
항목 아래에서 찾을 수 있습니다 .