이것은로드 된 구성과 런타임 구성의 문제입니다.
컴파일 또는 구문 분석 단계에서 구문 오류 또는 구문 분석 오류가 발생한다는 것을 인식하는 것이 중요합니다. 즉, PHP가 코드를 실행할 기회를 갖기 전에 PHP가 종료됩니다. 따라서 display_errors
런타임 동안 PHP의 구성을 수정하는 경우 ( ini_set
코드에 사용에서 런타임 구성 파일 인 .htaccess 사용 에 이르기까지 ) 기본 로드 된 구성 설정 만 포함됩니다. 만 사용됩니다.
개발시 항상 WSOD를 피하는 방법
WSOD를 피하기 위해 로드 된 구성 파일 이 display_errors
켜져 있고 error_reporting
설정되어 있는지 확인하려고합니다 -1
( 실행중인 PHP 버전에 관계없이 모든 비트가 설정되므로 E_ALL과 동일 함) ). E_ALL의 상수 값을 하드 코딩하지 마십시오.이 값은 다른 버전의 PHP간에 변경 될 수 있습니다.
로드 구성은로드 중입니다 php.ini
파일 또는 apache.conf
또는 httpd.conf
또는 가상 호스트 파일. 이러한 파일은 시작 단계 (예 : 아파치 httpd 또는 php-fpm을 처음 시작할 때) 동안 한 번만 읽고 런타임 구성 변경으로 재정의합니다. 확인display_errors = 1
와 error_reporting = -1
당신이 볼 수 없을 것입니다 귀하의로드 된 구성 파일 보장하지만에 WSOD을 에 관계없이 같은 런타임이 변경되기 전에 발생 문법이나 구문 분석 오류 ini_set('display_errors', 1);
또는 error_reporting(E_ALL);
일어날 수 있습니다.
(php.ini)로드 구성 파일을 찾는 방법
로드 된 구성 파일을 찾으려면 다음 코드만으로 새 PHP 파일을 만드십시오.
<?php
phpinfo();
그런 다음 브라우저를 가리키고 로드 된 구성 파일을 보고 추가 .ini 파일을 일반적으로 맨 위에 있으며 phpinfo()
로드 된 모든 구성 파일의 절대 경로가 포함됩니다.
당신이 볼 경우 (none)
대신 파일로, 그 의미는 당신의 php.ini 파일이없는 구성 파일 (php.ini 파일) 경로를 . 따라서 여기에 PHP와 함께 번들로 제공되는 php.ini 파일을 다운로드하여 php.ini와 같이 구성 파일 경로에 복사 한 다음 PHP 사용자가 해당 파일에서 읽을 수있는 충분한 권한이 있는지 확인하십시오. httpd 또는 php-fpm을 다시 시작하여로드해야합니다.이 파일은 PHP 소스와 함께 제공되는 개발 php.ini 파일입니다. 생산에 사용하지 마십시오!
프로덕션에서이 작업을 수행하지 마십시오
이것이 실제로 개발에서 WSOD를 피하는 가장 좋은 방법입니다. PHP 스크립트의 상단 ini_set('display_errors', 1);
또는 error_reporting(E_ALL);
상단에 또는 여기에서와 같이 .htaccess를 사용 한다고 제안하는 사람 은로드 된 구성 파일이있는 경우 구문 또는 구문 분석 오류가 발생할 때 WSOD를 피하는 데 도움이되지 않습니다 한 display_errors
꺼져.
많은 사람들 (및 PHP의 주식 설치)은 display_errors
기본적으로 꺼져 있는 production-ini 파일을 사용하므로 일반적으로 여기에서 경험 한 것과 같은 좌절감을 초래합니다. PHP는 시작할 때 이미 꺼져 있기 때문에 구문 또는 구문 분석 오류가 발생하여 출력 할 내용이 없습니다. 당신은 당신의 기대 ini_set('display_errors',1);
당신의 PHP 스크립트의 상단에이 것을 방지해야하지만, 런타임에 도달하지 않았을 것이기 때문에 PHP가 코드를 구문 분석 할 수 없습니다 경우는 문제가되지 않습니다.