#PHP

7개의 글
개발

한글이 ???로 깨졌다면 — MySQL utf8mb4, 진짜 원인은 따로 있다

분명히 잘 들어가던 한글 데이터가 어느 날 갑자기 `???`나 `한글` 같은 외계어로 바뀌어 보인 적 있으신가요. 게시판에 글을 쓰면 멀쩡한데, 터미널에서 덤프를 떴다가 다시 넣으면 죄다 깨지는 상황. 많은 개발자가 여기서 "테이블 문자셋을 utf8로 바꿨는데 왜 안 되지?"라며 몇 시간을 날립니다. > 한글 깨짐의 90%는 파일이 잘못된 게 아니라...

2026.06.25 · 읽기 6분 · 조회 4
한글이 ???로 깨졌다면 — MySQL utf8mb4, 진짜 원인은 따로 있다
개발

예약 글이 9시간 일찍 올라간 날 — PHP 타임존, 한 번에 이해하기

밤 11시에 예약해 둔 글이 있었습니다. 다음 날 오전 9시에 자동으로 올라가도록 맞춰 뒀죠. 그런데 아침에 일어나 보니 글은 이미 새벽에 올라가 있었고, 방문자 통계도 엉망이었습니다. 코드를 백 번 봐도 시간 계산에는 문제가 없었어요. 범인은 코드가 아니라 ==서버의 시간대(timezone) 설정==이었습니다. > 시간 버그의 90%는 '계산'이 아니라 ...

2026.06.24 · 읽기 6분 · 조회 8
예약 글이 9시간 일찍 올라간 날 — PHP 타임존, 한 번에 이해하기
개발

PHP mysqli, 문자열 이어붙이기 대신 prepared statement로 SQL 인젝션 막기

사용자 입력을 SQL에 직접 이어붙이면 SQL 인젝션에 노출된다. 결론부터 말하면 mysqli의 prepared statement(준비된 쿼리) 를 쓰면 값과 쿼리 구문이 분리되어 대부분의 인젝션을 원천 차단할 수 있다. 위험한 코드 ```php // 절대 이렇게 쓰지 말 것 $id = $_GET['id']; $sql = "SELECT FROM member...

2026.06.24 · 읽기 2분 · 조회 7
PHP mysqli, 문자열 이어붙이기 대신 prepared statement로 SQL 인젝션 막기
개발

날짜 계산만 하면 하루가 어긋나던 이유 — PHP DateTime 제대로 쓰기

"7일 뒤"를 계산했는데 결과가 하루씩 밀린 적, 한 번쯤 있으시죠? 저는 회원 쿠폰 만료일을 `strtotime`과 문자열로 대충 계산했다가, 월말과 윤년에서 보기 좋게 틀렸습니다. PHP에서 날짜를 안전하게 다루는 길은 생각보다 단순합니다. ==`DateTime` 클래스== 하나만 손에 익히면 됩니다. > 날짜는 '문자열'이 아니라 '객체'로 다뤄야 실...

2026.06.23 · 읽기 4분 · 조회 3
날짜 계산만 하면 하루가 어긋나던 이유 — PHP DateTime 제대로 쓰기
개발

PHP headers already sent 오류, 원인 3가지와 해결 (BOM·닫는태그·세션)

PHP에서 가장 자주 만나는 오류 중 하나가 `Warning: Cannot modify header information - headers already sent`다. 결론부터 말하면, HTTP 헤더(쿠키·세션·리다이렉트)를 보내기 전에 이미 본문(HTML, 공백, 출력)이 먼저 전송되었기 때문이다. 원인을 알면 대부분 1분 안에 해결된다. 왜 발생하나 H...

2026.06.23 · 읽기 3분 · 조회 4
PHP headers already sent 오류, 원인 3가지와 해결 (BOM·닫는태그·세션)
개발

MySQL 한글 깨짐, utf8mb4로 해결하는 순서 (PHP/임포트 포함)

MySQL에 한글을 저장했는데 글자가 `???` 나 깨진 문자로 보인 적 있으신가요? 원인은 대부분 문자셋(charset) 불일치입니다. 한 군데만 어긋나도 깨집니다. 이 글에서 어디를 맞춰야 하는지 순서대로 정리합니다. 결론부터: utf8 말고 utf8mb4 MySQL의 `utf8`은 사실 최대 3바이트만 저장하는 반쪽짜리라 이모지·일부 한자에서 문제가 ...

2026.06.23 · 읽기 3분 · 조회 14
MySQL 한글 깨짐, utf8mb4로 해결하는 순서 (PHP/임포트 포함)
개발

PHP require_once Failed opening required 오류, ROOT_PATH 경로 설계로 해결하기

PHP로 프로젝트를 만들다 보면 거의 한 번은 마주치는 오류가 있습니다. ``` Warning: require_once(.../config/config.php): failed to open stream: No such file or directory Fatal error: require_once(): Failed opening required '.../co...

2026.06.23 · 읽기 4분 · 조회 12