커뮤니티
작성일 : 17-06-21 03:58
그누보드4 자동등록방지 이미지가 출력이 안될 때
 글쓴이 : 최고관리자
조회 : 314  
정확히는 이미지는 출력되지만,
그 안에 적혀있어야 할 글자가 안 나올 때다.



이번에 카페24에서 돌리고 있는 그누보드4 + 영카트 이용 중인 쇼핑몰 하나가 우리 쪽으로 넘어오기로 했다.

원래 사이트를 관리 하라고 맡겨둔 외주 프리랜서가 있는데 지속적으로 관리를 좀 잘 해오다가
몇 년 전에 급작스럽게 연락이 두절됐단다. 뭐, 돈을 별로 안 줬거나 일신상의 이유이겠다만 전자가 좀 신빙성 있어 뵈는데 어쨌거나.

카페24의 PHP버전은 5.3 버전대고, 우리 쪽의 서버는 5.6 버전대라 좀 맞지 않는다.
그래서 임시로 서브도메인을 따고 그걸로 세팅하여 오류를 잡자고 생각했다.
뭐, 다들 그렇게 하잖나. 새로 서버를 세팅할 수는 없으니까 오류를 잡고 서비스를 시작해야지.

나머지 소소한 오류들은 몇 가지 옵션들을 바꿔주거나 구문을 기초적으로 변경해주는 정도로 다 잡혔다.

근데 이 놈의 캡챠 이미지가 나오지 않는거다.

당연히 구글링을 했다.

몇 가지의 답변글이 있는데



1. header를 이루기 위해 인클루드 되고 있는 파일들 중, 실질적인 header가 시작되기 전에 "공백"이 추가되어 있으면 출력이 안될 수 있다.

장황한 말이긴 하지만, 그누보드4의 (이외의 다른 툴들도 마찬가지지만) 상단부에는 먼저 라이브러리들을 불러오게 된다.
그 안에는 dbconfig도 있을 것이고, common도 있을 것이고, 기타 필요한 lib 파일들이 있을 것이다.
근데 이것들은 php 태그로 묶여서 각 파일들이 이루어져 있는데 header가 나오기 전에 공백 등의 문자가 기입되면 안된다.
근데. 알다시피 A파일 안에 include가 여러개 되어 있을 수 있고, 그걸 하나하나 열어서 확인하기는 좀 많이 힘들다.
그래도 해야한다. 안될 수 있는 확률이니까.

여기에는 함정이 숨어 있을 수 있는데,
UTF-8 서버의 경우, "메모장"은 UTF-8 +BOM 형식으로 저장을 한단다. 공백이 앞 뒤로 추가되지만, 에디터에서는 못 보는거다.
이 UTF-8 +BOM 형식 때문에 서버에서 읽을 때 공백이 읽힐 수 있다.
그러므로 메모장이 아닌 editplus 같은 프로그램으로 저장할 때 꼭 UTF-8로 저장을 하자.

하지만 난 이 경우가 아니였다.



2. 캡챠 이미지는 서버가 자동으로 생성하는 이미지이고, 이건 php-gd라는 모듈이 동작되는거다.

그누보드의 캡챠는 fonts라는 폴더에서 abcdef... 라고 나열되어 있는 이미지를 불러다가 글자들을 잘라 뽑아서 합성한 뒤 출력한다.
이러한 출력을 담당하는 것이 php 모듈 중 gd라는 녀석이고, phpinfo 를 봤을 때 이 녀석이 enabled 되어 있어야 한다.
만약 되어 있지 않다면 호스팅 업체라거나 서버관 리자에게 이걸 켜달라고 주문해야 되는데
아마도 99.5% 정도는 전부 다 켜져 있을거라고 생각된다. 이제 막 배우기 시작해서 php 컴파일을 해보는 단계가 아니라면.

역시 난 이 경우가 아니였다.



아무리 구글링을 해도 답이 안 나오는거다. 1번의 경우 때문에 파일들만 죽자고 열다가 이게 도대체 무슨 짓인가 싶었다.
분명히 카페24에서 tar.gz으로 퍼온 파일이기 때문에 퍼미션도 그대로일 것이고, 파일이 변조되지도 않았을건데 안 나온다.
버전 탓을 하기에는 이미지는 분명히 출력되고 있었다. 이미지가 없으면 엑박이 뜨겠지. 엑박이 아니거든.

배경색은 그대로 출력되는데 글자만 없다.
맨 처음에는 fonts 안에 있는 글자 템플릿을 의심했다. 글자만 출력 안되니까 그 쪽에 가능성이 있으니까.
그래서 그누보드4의 최신 버전을 다운로드 받아서 파일을 교체하고,
그래도 안되어서 캡챠에 관련된 js와 php를 모두 교체하고,
근데도 안되니까 버추얼 호스트를 하나 더 생성해서 그누보드4를 아예 새로 깔아봤다.
만약 php옵션 때문에 안되면 새로 세팅한 녀석에서도 캡챠가 안 나와야지.

근데. 나온다.

어 이거 뭐냐 싶어서 가장 만만한 config.php를 열어서 차분히 살펴봤다.



3. 문제는, 도메인이다.

문제는 도메인이였다. 임시 도메인을 땄던게 문제였던 거다.
정확하게는 임시 도메인을 땄기 때문에 컨피그를 정정해야되는데, 바꾸지 않았던 부분이 있는거다.

$g4['url'] 은 g4의 웹경로를 적는 칸이기 때문에 이건 변경을 했다.

$g4['cookie_domain'] 이걸 우습게 봤던거다. 어차피 임시이고, 회원 가입이나 상품 구매를 진행 안할꺼니까~

이걸 수정하는 순간, 캡챠가 뜬다.
망할.