모니위키의 config.php를 수정하다 보면 업로드한 이미지가 보이지 않는 문제를 겪을 수 있다. 이 페이지는 이러한 문제점의 원인을 분석하고 해결하기 까지의 과정을 정리한 DebugJournal이다.
----
----
1. 문제 발생 ¶
모니위키 1.1.3에서 추가된 cachetime 기능을 사용하려고 config.php를 수정하던 중에 갑작스레 모니위키에 업로드한 이미지가 보이지 않는 문제가 발생하게 되었다.
기존 페이지에서
또한 UploadedFiles 페이지를 열람해봐도 이미지를 확인할 수는 없었다.
attachment:image.jpg
를 사용한 경우, 이미지 대신 image.jpg
라는 문자만 출력되었다.
2. 문제가 발생하게 된 원인 파악 ¶
- 위키와 서버의 환경 파악 : 모니위키 버전은 1.1.3, 캐릭터셋은 UTF-8을 사용. 서버는 ffcomputing의 무료 계정으로 캐릭터셋은 UTF-8 이용. 서버의 php 및 아파치는 최신버전이다.
- 문제가 발생하기 전으로 복원 : 변경했던 설정 부분을 지우고 config.php를 계정으로 업로드
- 전문가에게 문의 : KLDP의 Q&A 게시판에 문의
- 질문글 : 사실 cachetime의 기능에 대한 질문 글을 먼저 올렸는데, 설정을 변경하는 과정에서 이미지가 보이지 않게 되는 문제가 발생하여 질문을 중간에 변경하게 되었다.
- 원인 파악 1 : download.php가 오작동
- 조치 1 :
/var/log/httpd/error_log 파일을 확인해서 문제점 파악하기무료계정에서는 확인 불가능
- 조치 2 :
config.php에서 $use_resume_download=1;에서 값을 0으로 변경문제 해결 x
- 원인 파악 2 : config.php의 헤더에 UTF-8문서임을 나타내는 BOM 문자가 삽입되었기에, image 파일의 헤더부분에도 BOM문자가 삽입된 것이다. 그래서 이미지가 문서 취급을 받게 되어 제대로 출력되지 않았다는 분석 결과를 얻음. 이런 상태에서는 action=download&value=파일이름 으로 링크가 걸리는 파일은 모두 같은 문제가 발생하게 된다.
3. 문제 해결 ¶
곰곰이 기억을 되살려보니 평소에는 Notepadplusplus로 config,php를 편집하다가, 우연히 windows의 NotePad를 사용했던 것이 문제였었다. NotePad는 자동으로 BOM문자를 붙여주기에 이런 해프닝이 발생하게 된 것이다.
이후 Notepad++에서 UTF-8 without BOM 옵션을 활성화 시키고, config.php를 새로 만들어 저장한 뒤 무료계정에 올려서 깔끔하게 문제를 해결했다.