PHP는 원래 개인 홈페이지 도구였다 — 언어가 될 생각이 없던 코드가 웹을 먹은 이야기

"PHP 아직도 쓰는 데가 있어요?"
"워드프레스가 PHP로 돌아간다던데, 그게 그렇게 오래된 언어예요?"
"이름이 왜 PHP예요? P가 대체 뭐의 약자죠?"
"레거시 PHP 유지보수 들어가라는데... 지금 와서 이걸 배워야 하나 싶어요."
개발 관련 커뮤니티나 신입 개발자 단톡방을 보면 PHP는 늘 이런 식으로 소환됩니다. 누군가는 "이미 죽은 언어"라고 하고, 누군가는 "그런데 내 월급이 PHP에서 나온다"고 합니다. 저는 2012년에 웹 개발을 시작했는데, 그 시절 회사에서 처음 유지보수를 맡았던 코드가 하필 PHP였습니다. 그래서 이 언어에 대해서는 감정이 좀 복잡합니다. 애증이라고 해야 할까요.
이 글에서는 PHP가 어쩌다 세상에 나왔는지, 그리고 "언어로 만들 생각이 전혀 없었다"던 물건이 어떻게 30년 넘게 웹을 붙들고 있는지를 정리해 봤습니다. PHP를 지금 처음 만지는 분, 레거시 앞에서 한숨 쉬는 분, 그리고 "얘는 왜 안 죽지?"가 궁금한 분께 도움이 될 것 같습니다.
📋 목차
- 방문자나 세려고 만든 물건
- "누가 쓰겠어" 하고 공개한 1995년
- 사실 언어도 아니었습니다
- 이스라엘 학생 둘이 판을 바꾸다
- 이름부터가 개발자식 농담입니다
- 못생겼다고 욕먹는데 왜 안 죽을까
- 제가 실무에서 만난 PHP
- 페이스북, 워드프레스, 그리고 2026년의 PHP
- "PHP는 죽었다"는 소문과 PHP 8
1. 방문자나 세려고 만든 물건
PHP를 만든 사람은 라스무스 레르도프(Rasmus Lerdorf)입니다. 그린란드에서 태어난 덴마크계 캐나다인 프로그래머인데, 정작 그가 1994년에 만든 건 "언어"가 아니었습니다. 자기 온라인 이력서에 누가 몇 번이나 들어왔는지 세어 보고 싶어서, C로 짠 CGI 바이너리 몇 개를 엮어 놓은 게 전부였습니다.
그 도구 묶음의 이름이 바로 "Personal Home Page Tools", 줄여서 PHP였습니다. 지금 우리가 아는 그 재귀 약어 이름이 아니라, 말 그대로 "개인 홈페이지 도구"였던 거죠. 방문자 카운터 하나 붙이자고 시작한 물건이었으니, 훗날 이게 웹의 절반 이상을 굴리게 될 줄은 만든 사람도 상상 못 했을 겁니다.
📌 시작은 이력서 카운터
레르도프는 "나는 프로그래밍을 별로 좋아하지 않는다.
코드를 덜 짜려고, 재사용하려고
이 도구를 만들었을 뿐"이라는 취지의 말을 여러 인터뷰에서 했습니다.
게을러지려고 만든 도구가 세상을 바꾼 셈입니다.
2. "누가 쓰겠어" 하고 공개한 1995년
1995년 6월, 레르도프는 이 도구의 소스 코드를 인터넷에 그냥 풀어버립니다. 대단한 포부가 있었던 건 아니고, "혹시 나 말고도 이런 거 필요한 사람 몇 명 있지 않을까" 정도의 마음이었다고 합니다. 열린 웹, 자유로운 공유를 좋아하던 사람이라 코드를 쥐고 있을 이유도 없었고요.
그런데 그 "몇 명"이 생각보다 많았습니다. 홈페이지에 방명록, 카운터, 간단한 폼 처리를 붙이고 싶던 초창기 웹 개발자들이 이 도구로 모여들기 시작했습니다. 몇몇은 직접 코드를 고쳐서 다시 보내주기도 했습니다. 오픈소스가 뭔지 다들 명확히 알기도 전에, PHP 주변에는 이미 작은 커뮤니티가 만들어지고 있었습니다.
3. 사실 언어도 아니었습니다
여기서 재미있는 부분이 나옵니다. PHP는 처음부터 "프로그래밍 언어"를 목표로 설계된 물건이 아니었습니다. 1995년 가을에 레르도프는 코드를 다시 갈아엎으면서 한동안 이름을 FI(Forms Interpreter)로 바꾸기도 했고, "Personal Home Page Construction Kit"이라고 부르기도 했습니다. 이름이 왔다 갔다 한 것부터가, 이게 뭐가 되려는 물건인지 만든 사람도 확실히 정하지 못했다는 증거입니다.
문법은 Perl과 HTML을 어정쩡하게 섞어 놓은 형태였고, 규칙도 들쭉날쭉했습니다. 그런데 사람들은 이 "느슨하게 묶인 스크립트 뭉치"를 점점 진짜 언어처럼 쓰기 시작했습니다. 레르도프 본인은 나중에 "언어를 만들 의도는 전혀 없었다. 어떻게 멈춰야 할지도 몰랐다. 그냥 다음에 필요한 기능을 하나씩 계속 붙였을 뿐"이라는 식으로 회고합니다. 설계도 없이, 그때그때 필요를 메우다 보니 어느새 언어가 되어 있었던 겁니다.
💡 "필요가 쌓여서" 만들어진 언어
대부분의 유명한 언어는 "이런 언어를 만들자"는 설계 철학에서 출발합니다.
PHP는 반대였습니다. 목표가 먼저 있었던 게 아니라,
현장의 필요가 쌓여서 뒤늦게 언어의 꼴을 갖췄습니다.
PHP 특유의 일관성 없는 함수 이름이나 문법도 상당 부분 이 출생의 비밀에서 옵니다.
4. 이스라엘 학생 둘이 판을 바꾸다
PHP가 진짜 "언어"의 모습을 갖춘 건 1997년, 이스라엘 텔아비브의 두 학생 안디 구트만스(Andi Gutmans)와 지브 수라스키(Zeev Suraski) 덕분이었습니다. 이들은 대학 프로젝트로 전자상거래 사이트를 만들려다가, 당시 PHP/FI가 너무 느리고 기능이 부족하다는 데 답답함을 느꼈습니다. 그래서 아예 파서(코드를 해석하는 엔진)를 처음부터 다시 짜기로 합니다.
두 사람은 레르도프에게 온라인으로 연락해 지금까지의 사정을 물었고, 결국 셋이 힘을 합쳐 완전히 새로운 언어를 내놓습니다. 이게 PHP 3이고, 오늘날 우리가 아는 PHP의 실질적인 출발점입니다. "개인용"이라는 좁은 뉘앙스를 벗기고, 데이터베이스 연결과 폼 처리, 사용자 정의 함수까지 갖춘 제대로 된 서버사이드 도구가 된 거죠. 훗날 이 두 사람이 만든 Zend 엔진은 오랫동안 PHP의 심장 노릇을 하게 됩니다.
5. 이름부터가 개발자식 농담입니다
PHP 3부터 이름의 의미도 바뀝니다. 원래 "Personal Home Page"였던 게, 이제는 "PHP: Hypertext Preprocessor"라는 재귀 약어가 됐습니다. 약어를 풀었더니 그 안에 또 PHP가 들어 있는 구조라, 아무리 펼쳐도 끝이 안 납니다. 개발자들이 좋아하는 전형적인 말장난이죠. 이름 하나에도 "우리는 이제 개인 홈페이지 도구가 아니다"라는 선언과, 그 시절 프로그래머 특유의 유머가 같이 담겨 있는 셈입니다.
지금까지의 흐름을 표로 정리하면 이렇습니다.
| 시기 | 단계 | 정체성 |
|---|---|---|
| 1994 | C로 짠 CGI 도구 묶음 | 이력서 방문자 카운터 |
| 1995 | 소스 공개, FI 등으로 재작성 반복 | CGI 도구 (아직 언어 아님) |
| 1997~1998 | 구트만스·수라스키의 파서 재작성, PHP 3 | 제대로 된 서버사이드 언어 |
| 2000년대 | PHP 4·5, 워드프레스 등 CMS 폭발 | 웹의 기본 언어 |
| 2020년대 | PHP 8, JIT·타입 시스템·PHP 재단 | 현대화된 성숙한 언어 |
6. 못생겼다고 욕먹는데 왜 안 죽을까
PHP는 개발자들 사이에서 놀림감이 되는 일이 잦습니다. 함수 이름 규칙이 제각각이고(어떤 건 언더스코어, 어떤 건 붙여쓰기), 인자 순서도 함수마다 들쑥날쑥하죠. 앞에서 얘기한 "설계 없이 필요 따라 붙여온" 역사가 흉터처럼 남은 겁니다. 그런데도 PHP는 안 죽습니다. 오히려 웹의 대들보 자리를 20년 넘게 지키고 있습니다.
이유를 몇 가지 꼽아보면 이렇습니다.
- 진입 장벽이 낮았습니다. HTML 파일 안에 <?php ?> 태그만 끼워 넣으면 바로 동작하니, 웹만 하던 사람이 서버 로직을 배우기에 이만한 게 없었습니다.
- 공유 호스팅 어디에나 깔려 있었습니다. 저렴한 웹호스팅에 파일만 올리면 돌아가니, 서버 세팅을 몰라도 사이트를 띄울 수 있었죠.
- 결과가 즉시 보였습니다. 파일 저장하고 새로고침하면 끝. 빌드 과정이 없다는 게 초심자에겐 엄청난 장점이었습니다.
- MySQL과 궁합이 좋았습니다. PHP + MySQL 조합, 이른바 LAMP 스택이 저렴한 동적 웹사이트의 표준이 됐습니다.
정리하면, PHP는 "가장 우아한 언어"였던 적은 없지만 "가장 만만한 언어"이긴 했습니다. 그리고 웹이라는 판에서는 우아함보다 만만함이 더 크게 이겼습니다.
7. 제가 실무에서 만난 PHP
제가 2012년에 웹 개발을 시작했을 때, 첫 회사에서 처음 붙잡은 코드가 PHP로 짠 사내 관리자 페이지였습니다. 그때는 프레임워크 없이 <?php ?> 태그를 HTML 사이사이에 그냥 박아 넣는 방식이 흔했습니다. 지금 보면 스파게티도 그런 스파게티가 없는데, 그땐 그게 딱히 이상하지도 않았습니다. include로 헤더랑 푸터만 나눠 놔도 "구조 잡았다"고 뿌듯해하던 시절이었으니까요.
DB 쿼리도 mysql_query로 직접 문자열을 이어 붙여 날렸습니다. 그러다 SQL 인젝션이라는 걸 몸으로 배웠습니다. 이스케이프 안 한 파라미터로 관리자 페이지가 얼마나 쉽게 뚫리는지를 직접 겪고 나서야, 저는 "입력값은 일단 의심하고 본다"는 방어적인 습관을 갖게 됐습니다. 지금 제가 보안이나 방어 코드에 예민한 편인데, 그 출발점이 사실 이 PHP 레거시였던 겁니다.
배포는 더 단출했습니다. FTP로 수정한 파일 하나 덮어쓰면 그걸로 끝이었습니다. 요즘 Docker로 이미지 빌드하고 배포 파이프라인 돌리는 걸 생각하면 아찔할 만큼 위험한 방식이지만, 반대로 그만큼 빨랐던 것도 사실입니다. 나중에 CodeIgniter나 Laravel 같은 프레임워크를 접하고 나서야 "아, 사람들이 왜 굳이 MVC를 얹었는지" 뒤늦게 이해했습니다.
💡 옛날 방식이 지금 정답은 아닙니다
위에 적은 mysql_query 직접 사용이나
FTP 배포는 2012년 그 시절의 흔한 관행이었을 뿐,
지금 따라 하면 안 되는 방식입니다.
mysql_* 함수는 이미 오래전에 폐기됐고,
요즘은 PDO나 준비된 구문(prepared statement),
그리고 CI/CD 파이프라인을 씁니다.
옛날이야기는 옛날이야기로만 봐 주세요.
8. 페이스북, 워드프레스, 그리고 2026년의 PHP
PHP의 위상을 단번에 보여주는 사례가 초창기 페이스북입니다. 페이스북은 PHP로 시작했고, 레르도프가 그 초기 코드를 들여다봤을 때 "엉망진창인데 그래도 잘 돌아가더라"는 취지의 이야기를 남긴 일화가 유명합니다. 가장 잘 짠 코드가 아니라 가장 빨리 굴러가는 코드가 세상을 먹을 때도 있다는, 웹판다운 교훈이죠.
그리고 지금도 PHP는 현역입니다. 2026년 기준으로 보면 이렇습니다.
| 지표 | 수치 |
|---|---|
| 서버사이드 언어가 파악된 사이트 중 PHP 사용률 | 약 72% (W3Techs, 2026년 5월 기준) |
| 워드프레스가 굴리는 전체 웹사이트 비중 | 약 43% |
| 대표적으로 PHP 계열을 쓰는 서비스 | 위키피디아, 슬랙, 엣시, 텀블러 등 |
수치를 보는 관점에 따라 통계마다 71~79% 사이로 편차가 있지만, PHP가 여전히 서버사이드 언어 판에서 압도적 1위라는 사실은 변하지 않습니다. 워드프레스라는 거대한 닻 하나만으로도 PHP 개발 수요는 당분간 마르지 않을 겁니다.
9. "PHP는 죽었다"는 소문과 PHP 8
"PHP 죽었다"는 말은 매년 나오는데, 정작 데이터는 그 반대를 가리킵니다. 개인적으로는 PHP가 죽은 게 아니라 "지루해졌다"는 표현이 더 맞는 것 같습니다. 화제성은 떨어졌지만 안정적이고 예측 가능하다는 뜻이니까요. 실무에서는 사실 그게 미덕입니다.
게다가 요즘 PHP는 예전의 그 PHP가 아닙니다. PHP 5.6만 기억하는 분이라면 인식을 좀 업데이트하실 필요가 있습니다.
- PHP 8.0에서 JIT 컴파일러가 들어오면서 성능이 크게 올랐습니다.
- enum, 유니온 타입, readonly 속성, match 표현식 같은 현대적인 문법이 추가됐습니다.
- PHP 8.4에는 property hooks, 8.5에는 파이프 연산자까지 들어왔습니다(8.5는 2025년 11월 릴리스).
- 2021년에는 PHP 재단(PHP Foundation)이 출범해, JetBrains·Automattic·Laravel 등이 언어 개발을 지원하고 있습니다.
전용 재단이 있고, 매년 메이저 버전이 나오고, 수백만 명의 현역 개발자가 있는 언어를 "죽었다"고 부르기는 어렵습니다. 유행에서 살짝 비켜나 있을 뿐입니다.
마무리
PHP의 역사를 따라가다 보면 한 가지가 계속 걸립니다. 이 언어는 거창한 설계에서 나온 게 아니라, "이력서 방문자나 세어보자"는 작은 필요에서 시작해 필요가 쌓이는 대로 붙어 자란 물건이라는 점입니다. 못생겼고, 일관성 없고, 자주 놀림받지만, 정작 웹이라는 실전에서는 그 만만함과 즉시성으로 30년을 버텼습니다.
저는 PHP 레거시 앞에서 한숨도 많이 쉬었지만, 동시에 보안이나 방어적 코딩 습관의 상당 부분을 그 코드에서 배웠습니다. 그래서 이 언어를 볼 때마다 이런 생각을 합니다. 가장 우아한 도구가 이기는 게 아니라, 사람들이 실제로 손에 쥐고 쓰는 도구가 오래간다고요. 지금 레거시 PHP 앞에서 고민 중인 분이 계신다면, 너무 억울해하지 않으셔도 될 것 같습니다. 적어도 당분간 이 언어가 벌어다 주는 밥은 꽤 든든할 테니까요.
📚 함께 보면 좋은 글
자바와 자바스크립트 차이는? 10일 만에 만들어진 자바스크립트 역사 이야기
자바(Java)와 자바스크립트(JavaScript)의 차이는 개발 공부를 막 시작한 분들이 가장 많이 헷갈려 하는 부분입니다. "자바랑 자바스크립트랑 같은 거 아니에요?" 제가 13년째 가장 자주 듣는 질문이
devwar.tistory.com
파이썬 이름 유래는? 뱀이 아닌 진짜 어원과 역사, 13년 차 개발자의 솔직한 평가
파이썬(Python)이라고 하면 많은 분들이 뱀을 먼저 떠올립니다. 로고에도 뱀 두 마리가 그려져 있으니 그럴 만하죠. 그런데 파이썬이라는 이름은 사실 뱀과 아무 상관이 없습니다. 이 글에서는 파
devwar.tistory.com
Go 언어(Golang)는 왜 태어났을까 - 구글 천재들이 현타 와서 만든 언어
Go 언어(Golang)는 2007년 구글에서 태어난 프로그래밍 언어입니다. C++ 빌드 한 번에 45분이 걸리던 시절, 그 지긋지긋함에 멘탈이 무너진 세 명의 엔지니어가 "기능을 더 얹지 말고 오히려 덜어내자"
devwar.tistory.com
데이터는 어디에 저장될까 - CPU·메모리·하드디스크로 이해하는 Redis·MySQL·MongoDB
"Redis는 왜 그렇게 빠른가요?""메모리 DB라던데, 그럼 서버 껐다 켜면 데이터가 다 날아가는 거 아니에요?""MySQL이랑 MongoDB는 결국 뭐가 다른 건데요?""세션을 Redis에 저장한다는 말이 무슨 뜻이죠?
devwar.tistory.com
Dart(다트) 언어 역사 - 자바스크립트 대체 실패에서 플러터의 심장이 되기까지
Dart(다트)는 구글이 자바스크립트를 대체하겠다며 2011년에 내놓은 프로그래밍 언어입니다. 브라우저 안에 Dart VM을 심겠다는 야심으로 출발했지만 2015년 그 계획이 무산되면서 한동안 "실패한 언
devwar.tistory.com
'언어의역사' 카테고리의 다른 글
| 러스트(Rust) 메모리 안전성, 왜 지금 시스템 프로그래밍의 기준이 되어가나 (0) | 2026.07.06 |
|---|---|
| 코틀린(Kotlin)은 어떻게 태어났나 - 자바가 답답했던 도구 회사의 반란 (0) | 2026.07.06 |
| Dart(다트) 언어 역사 - 자바스크립트 대체 실패에서 플러터의 심장이 되기까지 (0) | 2026.07.05 |
| Go 언어(Golang)는 왜 태어났을까 - 구글 천재들이 현타 와서 만든 언어 (0) | 2026.07.05 |
| 파이썬 이름 유래는? 뱀이 아닌 진짜 어원과 역사, 13년 차 개발자의 솔직한 평가 (0) | 2026.07.05 |