PHP에서 유용한 오류 메시지를 얻으려면 어떻게 해야 합니까?
PHP 스크립트를 실행하려고 하면 빈 화면이 나타납니다.에러 메세지는 없고, 빈 화면 뿐입니다.원인은 단순한 구문 오류(괄호 틀림, 세미콜론 누락), 함수 호출 실패 또는 기타 모든 것이 원인일 수 있습니다.
무엇이 잘못되었는지 알아내는 것은 매우 어렵다.코드에 코멘트를 붙이고, 「에코」문을 곳곳에 입력하는 등, 문제를 좁히려고 하고 있습니다.하지만 분명 더 나은 방법이 있을 거야, 그렇지?
Java처럼 PHP가 유용한 오류 메시지를 생성하도록 하는 방법이 있습니까?
구문 오류의 경우 php.ini에서 오류 표시를 활성화해야 합니다.기본적으로는 "고객"이 오류 메시지를 표시하지 않도록 하기 위해 이러한 기능은 꺼져 있습니다.다음의 2개의 지시에 대해서는, PHP 메뉴얼의 이 페이지를 참조해 주세요.error_reporting
★★★★★★★★★★★★★★★★★」display_errors
display_errors
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★php수 파일에 .php.ini는 .htaccess.htaccess.는 .htaccess.ini입니다.
php_flag display_errors on
php_value error_reporting 2039
(Gumbo 서급)에 e) E_ALL의 에 대해 (Gumbo에서을 사용하는 것을 하는 것이 .error_reporting
모든 오류를 가져오려면 여기를 클릭하십시오. 자세한 정보
기타 3가지 항목: (1) 모든 오류가 발생하므로 오류 로그 파일을 확인할 수 있습니다(로깅이 비활성화되지 않은 경우).(2) 다음 2 행을 추가하면 구문 오류가 아닌 오류를 디버깅하는 데 도움이 됩니다.
error_reporting(-1);
ini_set('display_errors', 'On');
(3) PhpEd와 같이 입력 시 오류를 체크하는 에디터를 사용하는 방법도 있습니다.PhpEd는 더 자세한 정보를 제공할 수 있는 디버거도 함께 제공합니다.(PhpEd 디버거는 xdebug와 매우 유사하며 에디터에 직접 통합되어 있기 때문에 모든 작업을 1개의 프로그램으로 수행할 수 있습니다.)
Cartman 링크도 매우 좋습니다.http://www.ibm.com/developerworks/library/os-debug/
다음에, 모든 에러를 유효하게 합니다.
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
다음 링크도 참조해 주세요.
- http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors
- http://php.net/manual/en/errorfunc.configuration.php#ini.display-startup-errors
- http://php.net/manual/en/function.error-reporting.php
다음 코드는 모든 오류를 표시합니다.
<?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에서 복사하여 붙여 넣었습니다만, 확실히 동작하고 있습니다.
디버깅할 파일에 다음 행을 포함할 수 있습니다.
error_reporting(E_ALL);
ini_set('display_errors', '1');
이로 인해 php.ini의 기본 설정이 덮어쓰게 되어 PHP가 오류를 로그에 보고하게 됩니다.
에 됩니다.....\logs\php_error.log
★★★★★★★★★★★★★★★★★」....\logs\apache_error.log
설정에 .
또한 유용한 오류는 브라우저로 전송되지만 유효한 html이 아니기 때문에 표시되지 않습니다.
★★★★★★★★★★★★★★★★★."tail -f
로그 파일 및 빈 화면이 나타나면 IE의 "view" -> "source" 메뉴 옵션을 사용하여 원시 출력을 표시합니다.
PHP 구성
php.ini의 2개의 엔트리는 오류 출력을 지시합니다.
프로덕션에서는display_errors
is is is is to to to to to to to로 설정되어 있습니다.Off
(일반적으로 생산 현장에서의 에러 표시는 바람직하지 않기 때문에, 이것은 좋은 일입니다!).
다만, 개발에서는, 다음과 같이 설정할 필요가 있습니다.On
에러가 표시되도록 합니다.체크!
error_reporting
5.3의 는로 (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 에 액세스 할 수 있는 경우는, 엔트리에서 찾을 수 있습니다.
저는 항상 php 스크립트의 맨 위에서 이 구문을 사용하고 있습니다.
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'On'); //On or Off
"xdebug"라고 불리는 매우 유용한 확장자가 있습니다.이 확장자는 보고서를 훨씬 더 좋게 만듭니다.
간단한 실제 문제 해결을 위해 일반적으로 SO에서 다음을 권장합니다.
error_reporting(~0); ini_set('display_errors', 1);
트러블 슈팅이 진행 중인 대본의 선두에 배치됩니다.하지 않고, 입니다.완벽한 바리안트에서는, 그것을 netable로 하는 것도 가능합니다.php.ini
PHP에 오류를 기록하여 구문 및 시작 오류를 파악합니다.
여기서 개략적으로 설명하는 설정에는 PHP 버전에 관계없이 엄격한 오류, 알림 및 경고가 모두 표시됩니다.
다음 고려 사항:
- Xdebug를 설치하고 IDE를 사용하여 원격 디버깅을 활성화합니다.
다음 항목도 참조하십시오.
마지막 오류 또는 경고를 표시하기 위해 후크를 등록할 수 있습니다.
function shutdown(){
var_dump(error_get_last());
}
register_shutdown_function('shutdown');
이 코드를 index.debug의 선두에 추가하면 문제를 디버깅하는 데 도움이 됩니다.
만약 당신이 매우 쿨하다면, 다음을 시도해 볼 수 있다.
$test_server = $_SERVER['SERVER_NAME'] == "127.0.0.1" || $_SERVER['SERVER_NAME'] == "localhost" || substr($_SERVER['SERVER_NAME'],0,3) == "192";
ini_set('display_errors',$test_server);
error_reporting(E_ALL|E_STRICT);
로컬에서 실행 중인 경우에만 오류가 표시됩니다.또한 test_server 변수를 적절한 다른 장소에서 사용할 수도 있습니다.
스크립트가 실행되기 전에 발생한 에러는 검출되지 않지만, 99%의 에러는 문제가 되지 않습니다.
페이지 맨 위에서 파라미터를 선택합니다.
error_reporting(E_ERROR | E_WARNING | E_PARSE);
이는 로드된 상태와 런타임 구성의 문제입니다.
구문 오류 또는 구문 분석 오류가 컴파일 또는 구문 분석 단계에서 발생한다는 것을 인식하는 것이 중요합니다. 즉, PHP는 코드를 실행하기도 전에 문제를 해결합니다.따라서 PHP를 수정하는 경우display_errors
시 를 사용한 것(「」를 사용한 것)의 됩니다).ini_set
.htaccess (런타임 컨피규레이션파일)를 사용하는 코드에서는 로드된 기본 설정만 재생됩니다.
개발 시 항상 WSOD를 회피하는 방법
WSOD를 피하기 위해 로드된 컨피규레이션파일에 다음 파일이 있는지 확인합니다.display_errors
및 ★★error_reporting
로 -1
(이것은, 실행중의 PHP 의 버전에 관계없이, 모든 비트가 유효하게 되어 있기 때문에, 동등한 E_ALL 입니다).E_ALL의 상수 값은 PHP의 다른 버전 간에 변경될 수 있으므로 하드 코드하지 마십시오.
된 설정 중 입니다.php.ini
"파일"을 선택합니다.apache.conf
★★★★★★★★★★★★★★★★★」httpd.conf
"virtual host" 입니다.이러한 파일은 시작 단계(예를 들어 apache httpd 또는 php-fpm을 처음 시작할 때)에 한 번만 읽혀지고 런타임 구성 변경에 의해 덮어씁니다.「 」가 있는 합니다.display_errors = 1
★★★★★★★★★★★★★★★★★」error_reporting = -1
로드된 컨피규레이션파일에서는 다음과 같은 런타임 변경 전에 발생하는 구문 또는 해석 오류에 관계없이 WSOD가 표시되지 않도록 합니다.ini_set('display_errors', 1);
★★★★★★★★★★★★★★★★★」error_reporting(E_ALL);
일어날 수 있습니다.
로드된 구성 파일(php.ini)을 찾는 방법
로드된 구성 파일을 찾으려면 다음 코드만 사용하여 새 PHP 파일을 생성하십시오.
<?php
phpinfo();
그런 다음 브라우저를 가리키고 해석된 Loaded Configuration File과 Additional .ini 파일을 확인합니다.이 파일들은 보통 의 맨 위에 있습니다.phpinfo()
로드된 모든 구성 파일에 대한 절대 경로가 포함됩니다.
「」가 (none)
파일 대신 구성 파일(php.ini) 경로에 php.ini가 없습니다.따라서 여기서 PHP에 번들된 stock php.ini를 다운로드하여 php.ini로 설정 파일 경로에 복사하고 php 사용자가 해당 파일에서 읽을 수 있는 충분한 권한을 가지고 있는지 확인할 수 있습니다.로드하려면 httpd 또는 php-fpm을 재시작해야 합니다.이것은 PHP 소스와 함께 제공되는 개발 php.ini 파일입니다.그러니 생산에는 사용하지 말아주세요!
프로덕션에서는 이 작업을 수행하지 마십시오.
이것이 개발 중에 WSOD를 회피하는 가장 좋은 방법입니다.ini_set('display_errors', 1);
★★★★★★★★★★★★★★★★★」error_reporting(E_ALL);
경우 .를 사용하면 파일에 PHP가 구문 해석 오류가 수display_errors
꺼졌어요.
사람PHP의 은, 「PHP」(PHP)가 「합니다.display_errors
디폴트로는 꺼집니다.일반적으로 여기서 경험했던 것과 같은 좌절감이 발생합니다.PHP는 기동시에 이미 오프가 되어 있기 때문에, 구문이나 해석 에러가 발생해, 출력할 것이 아무것도 없는 상태가 됩니다.은 당신의 대는 that that that를 기대하고 ?ini_set('display_errors',1);
PHP 스크립트의 맨 위에 있는 것은 피해야 하지만, PHP가 런타임에 도달하지 못할 것이기 때문에 코드를 해석할 수 없는 것은 문제가 되지 않습니다.
php.ini의 confortale.이것은 보통 에 저장됩니다./etc/php.ini
★★★★★★★★★★★★★★★★★」/etc/php/php.ini
단, 로컬, ,, 다 ,php.ini
는, 호스트 프로바이더의 셋업 가이드 라인에 따라서, 덮어쓸 수 있습니다.phpinfo()
Loaded Configuration File
맨 위에 있는 것이 가장 나중에 로드되는 것인지 확인합니다.
해당 파일에서 display_errors를 검색합니다.인스턴스는 3개뿐이며, 그 중 2개는 코멘트입니다.
주석 없는 행을 다음과 같이 변경합니다.
display_errors = stdout
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
도움이 될지는 모르겠지만, 여기 php 프로젝트용 표준 설정 파일의 일부가 있습니다.자신의 서버에서도 Apache 설정에 크게 의존하지 않는 경향이 있습니다.
에러 소실 문제는 전혀 없기 때문에, 여기 있는 것을 보면 알 수 있을 것입니다.
APPLICATON_LIVE를 표시하도록 편집되었습니다.
/*
APPLICATION_LIVE will be used in process to tell if we are in a development or production environment. It's generally set as early as possible (often the first code to run), before any config, url routing, etc.
*/
if ( preg_match( "%^(www.)?livedomain.com$%", $_SERVER["HTTP_HOST"]) ) {
define('APPLICATION_LIVE', true);
} elseif ( preg_match( "%^(www.)?devdomain.net$%", $_SERVER["HTTP_HOST"]) ) {
define('APPLICATION_LIVE', false);
} else {
die("INVALID HOST REQUEST (".$_SERVER["HTTP_HOST"].")");
// Log or take other appropriate action.
}
/*
--------------------------------------------------------------------
DEFAULT ERROR HANDLING
--------------------------------------------------------------------
Default error logging. Some of these may be changed later based on APPLICATION_LIVE.
*/
error_reporting(E_ALL & ~E_STRICT);
ini_set ( "display_errors", "0");
ini_set ( "display_startup_errors", "0");
ini_set ( "log_errors", 1);
ini_set ( "log_errors_max_len", 0);
ini_set ( "error_log", APPLICATION_ROOT."logs/php_error_log.txt");
ini_set ( "display_errors", "0");
ini_set ( "display_startup_errors", "0");
if ( ! APPLICATION_LIVE ) {
// A few changes to error handling for development.
// We will want errors to be visible during development.
ini_set ( "display_errors", "1");
ini_set ( "display_startup_errors", "1");
ini_set ( "html_errors", "1");
ini_set ( "docref_root", "http://www.php.net/");
ini_set ( "error_prepend_string", "<div style='color:red; font-family:verdana; border:1px solid red; padding:5px;'>");
ini_set ( "error_append_string", "</div>");
}
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
ini_set('html_errors', 1);
또한 xdebug를 사용하여 자세한 정보를 얻을 수 있습니다.
PHP의 오류와 예외를 보다 잘 가시화하기 위해 Nette Tracy를 추천합니다.
error_reporting(E_ALL | E_STRICT);
그리고 php.ini에서 표시 오류를 설정합니다.
독자적인 에러 핸들러를 PHP 에 등록할 수 있습니다.예를 들어, 모든 오류를 파일에 덤프하면 이러한 불명확한 경우에 도움이 될 수 있습니다.현재 error_reporting이 무엇으로 설정되어 있는지에 관계없이 함수가 호출됩니다.매우 기본적인 예:
function dump_error_to_file($errno, $errstr) {
file_put_contents('/tmp/php-errors', date('Y-m-d H:i:s - ') . $errstr, FILE_APPEND);
}
set_error_handler('dump_error_to_file');
PHP에서 유용한 오류를 얻기 위해 필요한 두 가지 주요 항목은 다음과 같습니다.
ini_set('display_errors',1);
error_reporting(E_ALL);
다른 관계자에 의해 지적된 바와 같이 보안상의 이유로 디폴트로는 꺼집니다.유용한 힌트로서 사이트를 셋업할 때 다양한 환경에 맞게 스위치를 켜면 로컬 및 개발 환경에서 이러한 오류가 기본적으로 켜지도록 하는 것이 편리합니다.이것은, 다음의 코드로 실행할 수 있습니다(최초부터 액티브하게 하기 위해서, index.php 또는 설정 파일에 있는 것이 이상적입니다).
switch($_SERVER['SERVER_NAME'])
{
// local
case 'yourdomain.dev':
// dev
case 'dev.yourdomain.com':
ini_set('display_errors',1);
error_reporting(E_ALL);
break;
//live
case 'yourdomain.com':
//...
break;
}
php.ini를 열고 다음과 같이 설정되어 있는지 확인합니다.
display_errors = On
서버를 재시작합니다.
코드 에디터로 PHPStorm을 사용해 보는 것도 좋습니다.에디터에서 입력하는 동안 많은 PHP 및 기타 구문 오류가 발견됩니다.
Ubuntu 사용자라면 단말기에 접속하여 이 명령어를 실행합니다.
sudo tail -50f /var/log/apache2/error.log
50달러 파일이 .error.log
apache2 입니다.
완전한 에러 보고를 유효하게 하려면 , 다음의 순서를 스크립트에 추가합니다.
error_reporting(E_ALL);
이로 인해 최소한의 경고도 표시됩니다.그리고 만약을 위해:
ini_set('display_errors', '1');
에러를 강제로 표시합니다.프로덕션 서버에서는 이 기능을 꺼야 하지만 개발 중에는 꺼서는 안 됩니다.
"ERRORS"는 개발자가 자신의 실수를 알고 시스템을 완벽하게 작동시키기 위해 해결할 수 있는 가장 유용한 요소입니다.
PHP는 개발자들에게 오류가 발생하는 이유와 위치를 알 수 있는 더 나은 방법을 제공합니다. 따라서 개발자들은 이러한 오류를 알게 됨으로써 그들의 코드를 여러 가지 방법으로 개선할 수 있습니다.
스크립트 맨 위에 있는 두 줄에 모든 오류 메시지를 표시하기 위한 가장 좋은 방법은 다음과 같습니다.
error_reporting(E_ALL);
ini_set("display_errors", 1);
IDE에서 xdebug와 같은 디버거 도구를 사용하는 다른 방법입니다.
여기에 있는 모든 훌륭한 답변과 더불어 MySQLi 및 PDO 라이브러리에 대한 특별 언급을 하고 싶습니다.
하기 위해서...
- 데이터베이스 관련 오류를 항상 확인합니다.
- 반환 유형에서 메서드가 잘못되었는지 확인하지 않도록 합니다.
가장 좋은 옵션은 예외를 발생시키도록 라이브러리를 구성하는 것입니다.
MySQLi
스크립트 맨 위에 추가
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
은 사용 전에 이 가장 .new mysqli()
★★★★★★★★★★★★★★★★★」mysqli_connect()
.
PDO
를 합니다.PDO::ATTR_ERRMODE
PDO::ERRMODE_EXCEPTION
를 클릭합니다.은 컨스트럭터에서도 할 수 .
$pdo = new PDO('driver:host=localhost;...', 'username', 'password', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
또는 작성 후
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
완전한 에러 리포트(통지 및 엄밀한 메시지 포함)를 netable로 할 수 있습니다.어떤 사람들은 이것이 너무 장황하다고 생각하지만, 시도해 볼 가치가 있다. ★★error_reporting
로로 합니다.E_ALL | E_STRICT
ini.ini.ini.ini.ini.
error_reporting = E_ALL | E_STRICT
E_STRICT
에서는 권장되지 않는 기능에 대해 알리고 특정 작업을 수행하는 데 가장 적합한 방법을 제안합니다.
통지를 원하지 않지만 다른 메시지 유형이 유용한 경우 통지를 제외해 보십시오.
error_reporting = (E_ALL | E_STRICT) & ~E_NOTICE
'아, 하다, 하다' 이런 것도 꼭 해 주세요.display_errors
ini.ini.ini.ini로 하게 되어 .이 5 PHP 5.2.4로 합니다.보다 이전 버전인 경우 다음과 같이 설정합니다.On
:
display_errors = "On"
버전이 5.2.4 이후인 경우 다음을 사용합니다.
display_errors = "stderr"
error_reporting 및 display_errors ini 설정 외에도 웹 서버의 로그 파일에서 구문 오류를 가져올 수 있습니다.PHP를 개발할 때 개발 시스템의 웹 서버 로그인을 편집기에 로드합니다.페이지를 테스트하고 빈 화면이 나타날 때마다 로그 파일이 오래되어 새로고침 여부를 묻습니다.이 경우 아래로 이동하면 구문 오류가 발생합니다.예를 들어 다음과 같습니다.
[Sun Apr 19 19:09:11 2009] [error] [client 127.0.0.1] PHP Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in D:\\webroot\\test\\test.php on line 9
이 답변은 중복 부서에서 제공합니다.
ini_set()
/ . . / php.ini / .htaccess / .user.ini★★
display_errors
★★★★★★★★★★★★★★★★★」error_reporting
충분히 커버되었습니다. 언제 할지 다시 한 번 , 하다, 하다, 하다, 하다,ini_set()
런타임 오류에만 적용됩니다.php.ini
는 주로 개발 설정에 대해 편집해야 합니다.(Webserver와 CLI 버전은 종종 php.ini가 다릅니다.).htaccess
플래그는 날짜가 지난 설정에 대해서만 작동합니다(새로운 호스트 검색!적절하게 관리된 서버는 더 저렴합니다.).user.ini
are partial php.ini for modern setup (FCGI/FPM)
런타임 오류에 대한 대체 수단으로서 다음과 같은 것을 자주 사용할 수 있습니다.
set_error_handler("var_dump"); // ignores error_reporting and `@` suppression
-
error_display가 비활성화되어 있는 경우 마지막 런타임 알림/경고/오류를 가져오는 데 사용할 수 있습니다.
-
마지막 PHP 런타임 메시지도 포함하는 슈퍼로컬 변수입니다.
isset()
가!!이것이 많은 사람들을 불쾌하게 할 것이라는 것을 알지만, 새로 온 사람들이 사용해서는 안 됩니다.코드가 동작하고 있는 것을 확인한 후에 통지 억제를 추가할 수 있습니다.하지만 전에는 없었어.
최근 "뭔가 작동하지 않는다"는 질문의 대부분은 다음과 같은 오타가 원인입니다.
if(isset($_POST['sumbit'])) # ↑↑
코드가 다음과 같이 흐트러져 있으면 유용한 알림을 받을 수 없습니다.
isset
/empty
/array_keys_exists
. 를 사용하는 것이 더 현명할 수 있으므로 알림 및 경고는 최소한 로그에 기록됩니다.assert_options(ASSERT_ACTIVE|ASSERT_WARNING);
에 대한
assert()
섹션(매우 드물지만 좀 더 능숙한 코드에는 일부가 포함될 수 있습니다.PHP7은 php.ini에도 필요합니다.
-
PHP를 엄밀하게 입력된 언어로 벤딩하는 것은 많은 논리 오류를 수정하지는 않지만 디버깅을 위한 옵션은 분명합니다.
PDO / MySQLi
@Phil은 이미 PDO/MySQLi 오류 보고 옵션을 언급했습니다.물론 다른 데이터베이스 API에도 유사한 옵션이 존재합니다.
json_last_error()
+json_last_error_msg
JSON 해석의 경우.
-
정규식을 위해서.
-
컬 요구를 디버깅하려면 최소한 CURLOPT_VERBOSE가 필요합니다.
-
마찬가지로 셸 명령 실행 자체에서도 오류가 발생하지 않습니다. 필요하죠.
2>&1
$errno($errno)입니다.
언급URL : https://stackoverflow.com/questions/1475297/phps-white-screen-of-death
'programing' 카테고리의 다른 글
maria db 및 s3에 대한 클라우드 주조 공장 내 자동 백업 (0) | 2022.10.13 |
---|---|
JavaScript에서 현재 연도 가져오기 (0) | 2022.10.13 |
file_get_contents(): 코드 1에서 SSL 작업이 실패했습니다.암호화를 활성화하지 못했습니다. (0) | 2022.10.13 |
Google Colab: Google 드라이브에서 데이터를 읽는 방법 (0) | 2022.10.13 |
MySQL에서 선택한 값의 쉼표로 구분된 문자열 (0) | 2022.10.13 |