php 7

EUR 결제 금액이 100배로 저장됐다 — 로케일 콤마(,) 소수점 함정과 데이터 보정

TROUBLESHOOTING · 결제 EUR 결제 금액이 100배로 저장됐다 "22,99"가 2299로. 범인은 str_replace 한 줄과, 콤마를 소수점으로 쓰는 로케일이었다. 어느 날 매출 지표가 이상하게 튀었다. 특정 패키지 몇 건이 수천 달러로 집계된 것이다. 실제로 그렇게 팔렸을 리 없는 숫자. 추적해보니 EUR 결제 일부 건의 가격이 서버에 100배로 저장되고 있었다. 22.99가 2299로, 5.99가 599로. 이 글은 그 "가격 100배" 버그의 원인과 데이터 보정 과정이다. 범인은 결제 코드의 str_replace 한 줄이었고, 더 정확히는 소수점 구분자로 콤마를 쓰는 로케일이라는, 유럽·러시아 결제를 붙이면 반드시 만나는 함정이었다. (금액·건수는 예시다.) ..

클라우드 운영 2026.10.25

PHP 긴급 취약점(PHP2Shell, CVE-2026-109618/109619) 운영 서버 대응기

SECURITY · 긴급 대응 PHP 긴급 취약점(PHP2Shell) 운영 서버 대응기 어려웠던 건 취약점이 아니라 "서버마다 php.ini 경로와 FPM 서비스명이 제각각"이라는 운영 현실이었다. PHP에서 치명적 보안 취약점 2건이 공개됐다. 통칭 PHP2Shell(CVE-2026-109618, CVE-2026-109619). 둘 다 인증받지 않은 외부 공격자의 원격 코드 실행(RCE)으로 이어질 수 있어 전 세계가 긴급 패치에 들어갔다. PHP로 웹 요청을 처리하는 거의 모든 구성(PHP-FPM, php-cgi, FrankenPHP, LiteSpeed)이 영향권이고, 특히 Apache mod_php가 위험하다고 알려졌다. 이 글은 운영 중인 여러 PHP 서버에 이 취약점을 대응한 실무 기..

클라우드 운영 2026.10.24

CloudWatch 알람 메일에 AI 분석 붙이기 — Lambda + Bedrock Claude 파이프라인

OPERATION · 모니터링 자동화 CloudWatch 알람에 AI 오류 분석을 붙이기 에러가 터지면 Lambda가 최근 로그를 긁어 AWS Bedrock의 Claude에게 분석시키고, 원인·영향·조치·심각도가 정리된 메일을 보내준다. 6일차에서 "PHP 에러 알람이 울려 공격을 잡았다"는 글을 썼다. 그 글을 읽고 "그 알람은 어떻게 세팅한 거냐"는 질문을 받았다. 이번 글은 그 알람 파이프라인을 처음부터 만드는 과정이다. 그리고 핵심은 단순 알람이 아니라, 에러가 터지면 AWS Bedrock의 Claude가 로그를 분석해 "원인·영향·조치·심각도"를 정리한 메일을 보내주는 부분이다. 소스 코드 변경 없이 설정만으로 되는 로그 수집부터, AI 분석 Lambda의 프롬프트 설계와 무한루프..

AI 개발 2026.10.15

CloudWatch PHP 에러 알람으로 게임 API 공격(fuzzing) 막기

없음 / 인라인 style만 / 완전 반응형(모바일 가로스크롤 없음) - 민감 정보 전부 마스킹/일반화: · 회사/프로젝트명 → "내 게임" · 실제 IP → 예시 IP(203.0.113.45, RFC 5737 문서용 대역) · AWS 계정/ALB/SNS ARN/user_id/테이블·컬럼명 → 플레이스홀더·일반 명칭 · 로그·수치는 재구성한 예시(실제 값 아님) ── 발행 설정 (검색 유입용) ───────────────────────────── [제목 후보 — 검색어 포함] 1) CloudWatch PHP 에러 알람으로 게임 API 공격(fuzzing) 잡아낸 실전 대응기 2) foreach() argument must be of type array given 에러가 ..

클라우드 운영 2026.10.08

Unity IAP 5.x StoreKit 2 영수증(JWS) 서버 검증 트러블슈팅

PAYMENT · 트러블슈팅Apple StoreKit 2 영수증(JWS)서버 검증, PHP로 직접 구현하기verifyReceipt에서 거래별 JWS 로컬 서명 검증으로 전환한 이유와 방법#StoreKit2 #JWS #인앱결제 #PHPopenssl_verify가 계속 0(실패)만 뱉어서 며칠을 꼬박 헤맨 적 있으신가요? 저는 Apple StoreKit 2 영수증(JWS) 검증에서 딱 그랬습니다.이번 글은 Apple 인앱결제(IAP) 영수증을 서버에서 검증하는 이야기입니다. 용어가 좀 생소할 수 있는데, 핵심 개념부터 쉬운 비유로 풀고 코드는 그 뒤에 보여드릴게요. 결제 검증을 처음 보는 분도 "아, 이래서 이렇게 하는구나"가 되도록 썼습니다. (번들 ID 등은 예시 값입니다.)배경 — 클라이언트 결제 결과..

클라우드 운영 2026.10.07

게임 매출·지표를 매일 아침자동으로 메일 리포트 받기

BACKEND · 자동화게임 매출·지표를 매일 아침자동으로 메일 리포트 받기PHP + 크론(cron) + PHPMailer + QuickChart로 만드는 일일 리포트 봇#PHP #cron #PHPMailer #데이터시각화운영을 하다 보면 매일 아침 "어제 매출 얼마지? 신규 유저는? 결제자는?" 같은 걸 확인하게 됩니다. 매번 대시보드에 로그인해서 보는 것도 일이죠. 그래서 매일 정해진 시간에 핵심 지표를 집계해서, 그래프까지 그려 이메일로 자동 발송하는 리포트 봇을 만들었습니다. 이 글은 그 구조와 핵심 코드, 그리고 실제로 막혔던 지점을 정리한 글입니다.🎯 이 글을 끝까지 보면 — PHP만으로 "매일 아침 그래프가 포함된 리포트 메일이 자동으로 오는" 시스템을 만들 수 있습니다. 코드와 예시는 모..

AI 개발 2026.10.05

게임 서버 개발자가 실무에서 AI 코딩 도구를 써본 후기 (Kiro·Claude·DeepSeek)

AI DEVELOPMENT · 실무 후기게임 서버 개발자가 실무에서AI 코딩 도구를 써본 후기Kiro · Claude · DeepSeek — 잘되는 것과 안 되는 것, 그리고 검증의 이유#PHP #게임서버 #AI코딩 #백엔드안녕하세요. PHP와 MySQL, Redis, AWS로 모바일 게임 서버를 개발·운영하는 개발자입니다.요즘 "AI로 코딩한다"는 글은 많지만, 대부분 간단한 예제거나 체험기 수준이더군요. 그래서 저는 실제 운영 중인 게임 서버 코드에 AI를 써본 경험을 정리해보려 합니다. 잘되는 것뿐 아니라 안 되는 것, 그리고 "AI가 짠 코드를 왜 반드시 검증해야 하는지"까지 솔직하게 적겠습니다.왜 AI를 개발에 쓰기 시작했나반복적인 CRUD 코드, 비슷비슷한 SQL 쿼리, 로그 파싱 스크립트 같..

AI 개발 2026.10.03