웹호스팅 PHP exec() 차단 시 영카트5 KCP(pp_cli) 결제 먹통 원인과 점검 팁
최근 카페24, 가비아, 닷홈 등 주요 웹호스팅에서 보안 패치 이후 disable_functions에 exec, shell_exec, popen이 일괄 추가되면서, 구형 영카트5의 NHN KCP(pp_cli 바이너리 호출 방식) 승인 및 부분취소가 갑자기 멈추는 사례가 자주 발생하고 있습니다.
당장 결제가 안 될 때 서버 환경부터 10초 만에 확인하는 코드와 점검 포인트를 정리해 공유합니다.
1. 호스팅 exec() 차단 및 cURL 대체 가능 여부 확인 코드
루트 경로에 임시 파일(확인 후 즉시 삭제)로 아래 코드를 올려 실행하면, 실제로 pp_cli 바이너리 실행이 막힌 것인지 바로 판별할 수 있습니다.
<?php
header("Content-Type: text/plain; charset=utf-8");
$disabled = array_map("trim", explode(",", (string)ini_get("disable_functions")));
$exec_ok = function_exists("exec") && !in_array("exec", $disabled, true);
$curl_ok = function_exists("curl_init");
echo "PHP Version : " . PHP_VERSION . "\n";
echo "exec() 가능 여부 : " . ($exec_ok ? "가능 (바이너리 권한/경로 점검 필요)" : "차단됨 (pp_cli 실행 불가)") . "\n";
echo "cURL 확장 활성 : " . ($curl_ok ? "정상 (HTTPS API 통신 대체 가능)" : "비활성") . "\n";
?>
2. 영카트5 내 pp_cli 호출 지점 점검 목록
단순히 결제 승인 파일 하나만 고치면 관리자 취소에서 다시 막히는 경우가 많습니다. 아래 3개 구간을 함께 확인해야 합니다.
- PC/모바일 승인 허브:
shop/kcp/pp_cli_hub.php(구형 스킨은c_PayPlusCli.php내부exec()호출) - 관리자 전체/부분취소:
adm/shop_admin/orderformupdate.php및orderpartcancel.inc.php - 현금영수증 발급 연동 구간(사용 중인 경우)
3. 파일 업로드 없이 브라우저에서 pp_cli 호출 라인 정적 진단하기
외주 작업자에게 FTP 계정이나 g_conf_site_key가 들어 있는 설정 파일을 넘기기 부담스러울 때 바로 점검할 수 있도록, 브라우저 메모리(서버 전송 0 Byte)에서만 PHP 코드 내 exec() / pp_cli 의존 지점을 찾아주는 정적 진단 도구를 만들어 두었습니다.
- 무료 코드 정적 진단기: https://ienrum.github.io/kakao-map-guard/kcp-exec-patch/
- 증상별 복구 가이드 정리: https://ienrum.github.io/kakao-map-guard/kcp-exec-patch/cafe24-youngcart-kcp-error/
샘플 버튼이나 본인 pp_cli_hub.php 소스를 붙여넣으면 서버 업로드 없이 차단 호출 라인과 교체 방향을 바로 확인할 수 있으니 급하게 점검하실 때 참고하시기 바랍니다.
댓글을 작성하시려면 로그인이 필요합니다.