안녕하세요. 린치핀소프트 한광희입니다.

 

워드프레스 사이트맵(Sitemap) 설정 후 사이트맵 페이지에 접속하니 아래와 같은 오류 페이지가 나오는 문제를 겪고 있으신가요? 이는 보통 브라우저의 오류로 사이트맵이 XML이 브라우저로 출력될때 XML의 포맷이 브라우저가 허용하는 형식과 다를때 발생한다고 볼 수 있습니다. 워드프레스에서 아래와 같은 오류가 나올때는 보통 테마의 구성파일인 PHP파일들의 <?php , ?> 의 각 태그의 앞뒤에 공백이나 탭,스페이스와 같은 특수문자가 입력되어 있을 경우에 아래와 같은 오류가 출력되는 경우가 빈번합니다.

screenshot-newtab 2016-02-27 14-19-32

 

안타깝게도 워드프레스 테마나 플러그인은 수십개 또는 수백개의 PHP 파일을 포함하고 있으며 이 PHP 소스코드 파일들은 전적으로 개발자들에 의해 작성되어 일반 이용자뿐만 아니라 같이 플러그인을 개발하는 팀원들도 어느 파일에서 잘못된 건지 찾기가 쉽지는 않습니다.  오늘은 리눅스 환경에서 약간의 쉘 명령어를 이용하여 손쉽게 소스코드의 첫번째 줄과 마지막 줄을 출력해 봄으로써 쉽게 어느 파일에서 문제가 발생된 것인지 확인해 보는 방법을 안내합니다.

 

screenshot-newtab 2016-02-27 14-20-44

예를 든 위의 파일은 현재 사용하고 있는 TheShop 이라는 테마의 inc/extras.php 파일로 <?php 앞에 공백기호와 줄바꿈 기호가 들어가 있어 문제가 발생된것을 알수 있습니다. TheShop이라는 테마 파일도 수십개의 php파일로 구성되어 있어 어느 파일에서 이런 오류가 발생된것인지 찾기가 쉽지가 않습니다.

 

 

 

screenshot-newtab 2016-02-27 14-23-54

 

이때 , 테마의 최상위 디렉토리로 이동후 아래와 같은 명령어를 입력합니다.

find . -print | grep -i ‘.*[.]php’ |xargs head -n 1 > phpfilefirstline.txt

: 이 명령어는 현재 디렉토리 하위의 모든 *.php 확장자 파일의 첫번째 라인을 출력하고 해당 출력결과를 phpfilefirstline.txt 라는 파일에 저장합니다.

find . -print | grep -i ‘.*[.]php’ |xargs tail -n 1 > phpfilelastline.txt

: 이 명령어는 현재 디렉토리 하위의 모든 *.php 확장자 파일의 마지막 라인을 출력하고 해당 출력결과를 phpfilelastline.txt 라는 파일에 저장합니다.

 

이때 탐색하는 파일은 현재 디렉토리 뿐만 아니라 하위의 디렉토리 내의 파일들도 모두 검색합니다.

이후에 각 파일들읠 첫번째 라인의 출력은 phpfilefirstline.txt , 마지막 라인의 출력은 phpfilelastline.txt에 저장됩니다.

screenshot-newtab 2016-02-27 14-22-34

명령어의 결과로 생성된 파일인 phpfilefirstline.txt 텍스트 편집기로 열어 확인합니다. 위 이미지는 문제가 발생된 파일이 어느 파일인지 확인하고 있는 스크린샷입니다.이 스크린샷처럼 ./inc/extras.php 파일에서 <?php가 아니고 공백이 출력되어 이 부분이 잘못된것을 알 수가 있습니다.

./inc/extras.php 파일로 이동하여 <?php 앞의 줄바꿈과 공백을 없애주고 다시 XML 페이지를 시작해봅니다.

 

screenshot-52.68.215.28 2016-02-27 14-26-18

이처럼 정상적으로 동작하는 페이지가 나오면 문제가 해결된 것입니다.

 

저희 린치핀소프트도 테마나 플러그인 개발을 하다가 보면 테스트 간에 이런 문제가 발생될때가 있습니다. 이때에 저희가 편리하게 사용하는 방법으로 여러 분들에게 도움이 되었으면 좋겠습니다.