개발자의 하루

[다날] Cannot Find IP error 본문

Server

[다날] Cannot Find IP error

단독질주 2018. 1. 21. 17:13
반응형



테스트 서버에선 잘 돌던 PG가 실 서버에선 문제가 일어났습니다.


핸드폰 최종 결제 단계에서


Cannot Find IP


이전 실 서버에서는 잘 되었는데 새로운 서버에서 왜 이런 문제가 나오는지...

삽질 끝에 일단 정보라도 얻어 보려 다날 고객센터에 전화를 했는데 라우터가 어쩌구, IP가 어쩌구 말도 안되는 소리만...


내가 클라이언트가 아니라 개발자라고 서버단에서 할건 없냐 물어보니 당연 없다고 ㅠㅠ


구글링을 해도 나오는건 


1. 컴퓨터를 껏다 다시 켜라. 핸드폰으로 시도시 마찬가지로 껏다 다시 켜라 (즉 새로운 IP를 받아라)

2. register_golbals = On 하던지

@extract($_GET);

@extract($_POST);

@extract($_SERVER);

하라. > 다 안된다.


결국 하나식 블럭 테스트를 시도해 봅니다.


CPCGI.php 가 최종적으로 확인하는 단계니 여기서 문제가 날 확률이 100% 겠죠.


결제 완료에 대한 작업 전에 하단을 넣어 서로 정보를 잘 가져 오는지 확인합니다.


print_r2($TransR);

print_r2($Res);

print_r2($Res2);

exit;


정보를 잘 가져오는듯 하지만 결국 error 메세지는  Cannot Find IP 네요. ($TransR에서 정보가 안 나옴)


조금 더 위로 가서 $TransR을 구성하는 부분을 살펴 봅니다.


$nConfirmOption = 1; 

$TransR["Command"] = "NCONFIRM";

$TransR["OUTPUTOPTION"] = "DEFAULT";

$TransR["ServerInfo"] = $ServerInfo;

$TransR["ConfirmOption"] = $nConfirmOption;


서버 정보를 $ServerInfo가 받고 

$ServerInfo = $HTTP_POST_VARS["ServerInfo"]; 


그 위에서 $ServerInfo는 $HTTP_POST_VARS에서 가지고 오네요


서버 정보를 $HTTP_POST_VARS로 가져 오는군요.


$HTTP_GET_VARS,$HTTP_POST_VAR 등은 이미 보안상 취약해 사용중지 되었는데 다날은 아직도 사용하니 울며 겨자먹기로 써야 겠죠 ㅠㅠ


그럼 그 위 페이지 상단에서 정보를 잘 가져 오는지 확인해 봅니다.


@extract($HTTP_POST_VARS);

print_r2($HTTP_POST_VARS);

exit;


예상했던대로 $HTTP_POST_VARS 정보를 가져오지 못합니다.

아마도 이런경우 정상적인 서버라면 $HTTP_POST_VARS의 파라미터가 길어 발생된 경우가 있습니다.


php.ini 설정을 수정해 줍니다.


# vi /etc/php.ini 


중간쯤  register_long_arrays를 찾습니다. (핵심 포인트!)

아마도 off도 되어 있으면 on 으로 바꾸고 저장 후 아파치를 재시작하여 적용합니다.


php 5.0 이상 부터는 긴 형태의 PHP 예약 변수 배열을 register_long_arrays로 컨트롤 가능합니다.


다시 PG 핸드폰 결제를 실행하니 서버 정보를 잘 가져오고 결제가 성공적으로 이루어 졌습니다.


$HTTP_POST_VARS값이 넘어오지 않는다면

register_long_arrays를 확인해 보세요!




반응형