반응형 워드프레스 스킨 분석.. wp-load.php.. error_reporting(), file_exists(), wp_fix_server_vars() 함수..
이번 시간에는 반응형 워드프레스 스킨 내의 wp-load.php 파일을 살펴보기로 한다. 이전에 공부했던 파일들과 달리 wp-load.php 파일에서는 이전 것들과 달리 내용도 많아졌을 뿐만 아니라 공부할 것도 많아졌다.
다행히 이전에 공부했던 요소들도 제법 눈에 보이긴 하지만 그럼에도 새롭게 배울 것들도 많은 건 마찬가지다.
의욕에 앞서 한꺼번에 다 하려고 드니 부담스럽다. 이러다간 곧 지치고 말 것 같다. 욕심을 부리며 한꺼번에 많이 먹으려 들면 체하는 법… 부담되지 않는 범위 내에서 조금씩 공부해 나가야 할 것 같다.
PHP에서
error_reporting() 함수는 오류가 보고되는 방식을 정해준다고 한다. wp-load.php 파일 안에는 다음과 같이 작성되어 있다.
error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
PHP 5.3 이후 기본값은 ‘E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED’라고 하며, ‘E_NOTICE, E_STRICT’와 ‘E_DEPRECATED’ 수준 오류들은 보여주지 않는다고 한다.
솔직히 뭔 소린지 잘 모르겠다. 속 시원히 설명해 놓은 자료도 찾을 수 없는 상황에서 맨땅에 헤딩하듯 소스 붙들고 분석하며 공부하고 있는 나에겐 그냥 외계어처럼 들릴 뿐이다.
내가 제대로 이해한 것인지 모르겠으나 서버 상에 php.ini 파일에 기본값이 설정이 되어 있고, 이 파일의 설정값을 직접 수정할 수 없을 경우 위의 내용처럼 error_reporting() 함수에 인수를 넣어 원하는 방식으로 작동하도록 컨트롤하는 게 아닌가 짐작된다.
// 모든 오류 보고를 끈다.
error_reporting( 0 );
// 간단한 실행중인 오류들을 보고한다.
error_reporting( E_ERROR | E_WARNING | E_PARSE );
//’E_NOTICE’는 초기화되지 않은 변수를 보고하거나 철자가 틀린 변수 이름을 잡아내는데 좋을 수 있다.
error_reporting( E_ERROR | E_WARNING | E_PARSE | E_NOTICE );
// ‘E_NOTICE’를 제외한 모든 오류를 보고한다.
error_reporting( E_ALL & ~E_NOTICE );
// 모든 PHP 오류를 보고한다. (see changelog)
error_reporting( E_ALL );
// 모든 PHP 오류를 보고한다.
error_reporting( -1 );
PHP에서 file_exists() 함수는 서버에 특정 파일이 존재하는지 확인하고자 할 때 사용한다.
define( ‘ABSPATH’, dirname(__FILE__) . ‘/’ );
file_exists( ABSPATH . ‘wp-config.php’ );
사용 방법은 간단하다. file_exists() 함수에 확인하고자 하는 파일의 경로와 이름을 인수로 넣어주면 된다.
결국 위 코드는 wp-load.php 파일과 같은 디렉토리에 wp-config.php 파일이 존재하는지 확인하게 된다.
PHP에서 wp_fix_server_vars() 함수는 $_SERVER 변수들을 표준화하는 기능을 수행한다.
define( ‘WPINC’, ‘wp-includes’ );
require_once( ABSPATH . WPINC . ‘/load.php’ );
wp_fix_server_vars();
file_exists() 함수를 통해 wp-config.php 파일의 존재가 확인되지 않을 경우 load.php 파일을 한 번 가져오는데, 이 파일 안에 wp_fix_server_vars() 함수가 정의되어 있다.
표준화한다는 소리가 뭐냐하면 load.php 파일에 정의된 내용을 보면 알겠지만 ‘$_SERVER[‘HTTP_X_ORIGINAL_URL’]’ 이런 형태의 변수들을 ‘$_SERVER[‘REQUEST_URI’]’ 요런 형태의 변수들로 전부 고치겠다는 소리다.
wp-blog-header.php 분석, isset(), wp() 함수, ABSPATH, WPINC
wp-load.php 파일, strpos(), header() 함수 등..
오늘은 여기까지… 역시 새로운 것을 배우며 익힌다는 것은 힘든 일인 것 같다. 특히 나이 먹고 하려니 더 힘들다. ㅠㅠ 나머지 뒷부분은 다음 시간에 이어서 계속…