나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2025-09-27 07:15:54

PHP


파일:다른 뜻 아이콘.svg  
#!if 넘어옴1 != null
''''''{{{#!if 넘어옴2 == null
{{{#!if 넘어옴1[넘어옴1.length - 1] >= 0xAC00 && 넘어옴1[넘어옴1.length - 1] <= 0xD7A3
{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴1[넘어옴1.length - 1] < 0xAC00 || 넘어옴1[넘어옴1.length - 1] > 0xD7A3
은(는)}}}}}}{{{#!if 넘어옴2 != null
, ''''''{{{#!if 넘어옴3 == null
{{{#!if 넘어옴2[넘어옴2.length - 1] >= 0xAC00 && 넘어옴2[넘어옴2.length - 1] <= 0xD7A3
{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴2[넘어옴2.length - 1] < 0xAC00 || 넘어옴2[넘어옴2.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴3 != null
, ''''''{{{#!if 넘어옴4 == null
{{{#!if 넘어옴3[넘어옴3.length - 1] >= 0xAC00 && 넘어옴3[넘어옴3.length - 1] <= 0xD7A3
{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴3[넘어옴3.length - 1] < 0xAC00 || 넘어옴3[넘어옴3.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴4 != null
, ''''''{{{#!if 넘어옴5 == null
{{{#!if 넘어옴4[넘어옴4.length - 1] >= 0xAC00 && 넘어옴4[넘어옴4.length - 1] <= 0xD7A3
{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴4[넘어옴4.length - 1] < 0xAC00 || 넘어옴4[넘어옴4.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴5 != null
, ''''''{{{#!if 넘어옴6 == null
{{{#!if 넘어옴5[넘어옴5.length - 1] >= 0xAC00 && 넘어옴5[넘어옴5.length - 1] <= 0xD7A3
{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴5[넘어옴5.length - 1] < 0xAC00 || 넘어옴5[넘어옴5.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴6 != null
, ''''''{{{#!if 넘어옴7 == null
{{{#!if 넘어옴6[넘어옴6.length - 1] >= 0xAC00 && 넘어옴6[넘어옴6.length - 1] <= 0xD7A3
{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴6[넘어옴6.length - 1] < 0xAC00 || 넘어옴6[넘어옴6.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴7 != null
, ''''''{{{#!if 넘어옴8 == null
{{{#!if 넘어옴7[넘어옴7.length - 1] >= 0xAC00 && 넘어옴7[넘어옴7.length - 1] <= 0xD7A3
{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴7[넘어옴7.length - 1] < 0xAC00 || 넘어옴7[넘어옴7.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴8 != null
, ''''''{{{#!if 넘어옴9 == null
{{{#!if 넘어옴8[넘어옴8.length - 1] >= 0xAC00 && 넘어옴8[넘어옴8.length - 1] <= 0xD7A3
{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴8[넘어옴8.length - 1] < 0xAC00 || 넘어옴8[넘어옴8.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴9 != null
, ''''''{{{#!if 넘어옴10 == null
{{{#!if 넘어옴9[넘어옴9.length - 1] >= 0xAC00 && 넘어옴9[넘어옴9.length - 1] <= 0xD7A3
{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴9[넘어옴9.length - 1] < 0xAC00 || 넘어옴9[넘어옴9.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴10 != null
, ''''''{{{#!if 넘어옴10[넘어옴10.length - 1] >= 0xAC00 && 넘어옴10[넘어옴10.length - 1] <= 0xD7A3
{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴10[넘어옴10.length - 1] < 0xAC00 || 넘어옴10[넘어옴10.length - 1] > 0xD7A3
은(는)}}}}}} 여기로 연결됩니다. 
#!if 설명 == null && 리스트 == null
{{{#!if 설명1 == null
다른 뜻에 대한 내용은 아래 문서를}}}{{{#!if 설명1 != null
{{{#!html 다른 의미}}}에 대한 내용은 [[PHP(동음이의어)]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if 문단1 != null & 앵커1 == null
의 [[PHP(동음이의어)#s-|]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
의 [[PHP(동음이의어)#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if 문단2 != null & 앵커2 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if 문단3 != null & 앵커3 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if 문단4 != null & 앵커4 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if 문단5 != null & 앵커5 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if 문단6 != null & 앵커6 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if 문단7 != null & 앵커7 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if 문단8 != null & 앵커8 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if 문단9 != null & 앵커9 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if 문단10 != null & 앵커10 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
의 [[#|]] 부분을}}}}}}
#!if 설명 == null
{{{#!if 리스트 != null
다른 뜻에 대한 내용은 아래 문서를}}} 참고하십시오.

#!if 리스트 != null
{{{#!if 문서명1 != null
 * {{{#!if 설명1 != null
다른 의미: }}}[[PHP(동음이의어)]] {{{#!if 문단1 != null & 앵커1 == null
문서의 [[PHP(동음이의어)#s-|]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
문서의 [[PHP(동음이의어)#|]] 부분}}}}}}{{{#!if 문서명2 != null
 * {{{#!if 설명2 != null
: }}}[[]] {{{#!if 문단2 != null & 앵커2 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명3 != null
 * {{{#!if 설명3 != null
: }}}[[]] {{{#!if 문단3 != null & 앵커3 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명4 != null
 * {{{#!if 설명4 != null
: }}}[[]] {{{#!if 문단4 != null & 앵커4 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명5 != null
 * {{{#!if 설명5 != null
: }}}[[]] {{{#!if 문단5 != null & 앵커5 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명6 != null
 * {{{#!if 설명6 != null
: }}}[[]] {{{#!if 문단6 != null & 앵커6 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명7 != null
 * {{{#!if 설명7 != null
: }}}[[]] {{{#!if 문단7 != null & 앵커7 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명8 != null
 * {{{#!if 설명8 != null
: }}}[[]] {{{#!if 문단8 != null & 앵커8 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명9 != null
 * {{{#!if 설명9 != null
: }}}[[]] {{{#!if 문단9 != null & 앵커9 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명10 != null
 * {{{#!if 설명10 != null
: }}}[[]] {{{#!if 문단10 != null & 앵커10 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단10 == null & 앵커10 != null
문서의 [[#|]] 부분}}}}}}

[[프로그래밍 언어|'''프로그래밍 언어
{{{#!wiki style="font-family: Times New Roman, serif; display: inline;"
]]
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)"
{{{#!folding [ 목록 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=royalblue><colcolor=#fff> ※ 나무위키에 등재된 프로그래밍 언어 목록
AActionScript · AdaT · AgdaTP · ALGOLT · ApexT · APL · awk · AssemblyT
BBASIC
C파일:C언어 로고.svg CT · 파일:C C#T · 파일:C++ 로고.svg C++T · CarbonT · 파일:clojure_logo.png ClojureS · COBOLT · CoffeeScript · Common LispS · CrystalT
D파일:external/upload.wikimedia.org/D_programming_language_logo.png DT · 파일:Dart 심볼.svg DartT
EElixir · 파일:Elm_logo.svg.png elmT · Erlang
F파일:fsharp-logo.png F#T · Factor · 파일:fennel-logo.svg FennelS · 파일:forth.png Forth · FortranT
GGNU Octave · 파일:Go 로고.svg GoT · Groovy
H파일:Haskell 로고 심볼.svg HaskellT · HolyCT
I
J파일:Java 로고.svg JavaT · 파일:JavaScript 로고.svg JavaScript · 파일:julia-dots.svg Julia
K파일:Kotlin 심볼.svg KotlinT · Krait
LLeanTP · 파일:LISP_logo.svg LISPS · 파일:Lua 로고.svg Lua
MMATLAB · MaxV · MojoT · Moonlight
N파일:Nim 왕관 로고.svg NimT · 파일:Nix 로고.svg Nix
OOberonT · Objective-CT · 파일:ocaml.svg OCamlT
PPascalT · Perl · 파일:PHP 로고.svg PHP · Processing · Prolog · 파일:Python 심볼.svg Python
QQ#T
R파일:R 로고.svg R · 파일:racket-logo.svg RacketS · Raku · ReasonMLT · RocqTP · 파일:Ruby 로고.svg Ruby · 파일:Rust 로고.svg파일:Rust 로고 화이트.svg RustT
SSAS · 파일:Scala 로고.png ScalaT · SchemeS · 파일:스크래치(교육 플랫폼) 로고.svg ScratchV · sed · Shell Script · Smalltalk · 파일:Swift 심볼 배경.svg SwiftT
T파일:Typescript_logo_2020.svg TypeScriptT
UUdon
VVisual Basic · Visual Basic .NET · Visual Basic for Applications · vvvvV
WWave
XXSharp
Y
ZZenScript · 파일:Zig 로고마크.svg ZigT
한글누리 · V · 씨앗 · 약속 · 파일:엔트리 아이콘.svg 엔트리V · 창조
T: 정적 타입 프로그래밍 언어 · P: 증명 보조 언어 · S: LISP 방언 및 S-표현식 기반 언어 · V: 시각적 프로그래밍 언어 }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)"
{{{#!folding [ 순위 ]
{{{#!wiki style="margin: -5px -1px -10px"
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ IEEE Spectrum 2024 ]
{{{#!wiki style="margin: -5px -1px"
<tablewidth=100%><tablebgcolor=transparent><colbgcolor=#11a500><colcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 <colbgcolor=#ff1100><colcolor=#fff> 직업 부문 상위 10개 프로그래밍 언어
1 Python 1 SQL
2 Java 2 Python
3 JavaScript 3 Java
4 C++ 4 TypeScript
5 TypeScript 5 SAS
6 SQL 6 JavaScript
7 C# 7 C#
8 Go 8 HTML
9 C 9 Shell
10 HTML 10 C++ }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ Stack Overflow 2024 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=#ffa500><colcolor=#fff> 2024년 Stackoverflow 설문조사 상위 25개 프로그래밍 언어
1 JavaScript <colbgcolor=#ffa500><colcolor=#fff> 14 Rust
2 HTML & CSS 15 Kotlin
3 Python 16 Lua
4 SQL 17 Dart
5 TypeScript 18 어셈블리어
6 Bash 19 Ruby
7 Java 20 Swift
8 C# 21 R
9 C++ 22 Visual Basic
10 C 23 MATLAB
11 PHP 24 VBA
12 PowerShell 25 Groovy
13 Go }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ TIOBE 2025 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=#2777c2><colcolor=#fff> 2025년 4월 TIOBE 검색어 점유율 상위 20개 프로그래밍 언어
1 Python <colbgcolor=#2777c2><colcolor=#fff> 11 Fortran
2 C++ 12 Scratch
3 C 13 PHP
4 Java 14 R
5 C# 15 Ada
6 JavaScript 16 MATLAB
7 Go 17 Assembly language
8 Visual Basic 18 Rust
9 Delphi / Object Pascal 19 Perl
10 SQL 20 COBOL }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ PYPL 2025 ]
{{{#!wiki style="margin: -5px -1px -10px"
<colbgcolor=green><colcolor=#fff> 2025년 5월 PYPL 검색어 점유율 상위 20개 프로그래밍 언어
1 Python <colbgcolor=green><colcolor=#fff> 11 Swift
2 Java 12 Go
3 JavaScript 13 Kotlin
4 C/C++ 14 MATLAB
5 C# 15 Ada
6 R 16 Ruby
7 PHP 17 Dart
8 Rust 18 Lua
9 TypeScript 19 VBA
10 Objective-C 20 PowerShell }}}}}}}}}}}} }}}}}}}}}}}}
실행 방식 · 분류 · 언어 목록(분류:프로그래밍 언어 문법) · 언어별 예제 · 틀:프로그래밍 언어 문법 · 틀:난해한 프로그래밍 언어

#!syntax php
<?php
echo "Hello, world!";
?>
php
PHP: Hypertext Preprocessor
파일:PHP 로고.svg
<colbgcolor=#787CB4><colcolor=#ffffff> 최초 개발자 Rasmus Lerdorf
운영 및 개발 The PHP Group
(Zend by Perforce[1])
The PHP Foundation
라이선스 PHP License
최초 버전 1.0 (1995. 6. 8.)
최신 버전 {{{#!folding 8.1.33 (2025. 7. 3.) 역대 버전
8.1.0 Alpha 1 2021. 6. 10.
8.1.0 Alpha 2 2021. 6. 24.
8.1.0 Alpha 3 2021. 7. 8.
8.1.0 Beta 1 2021. 7. 22.
8.1.0 Beta 2 2021. 8. 5.
8.1.0 Beta 3 2021. 8. 19.
8.1.0 RC 1 2021. 9. 2.
8.1.0 RC 2 2021. 9. 16.
8.1.0 RC 3 2021. 9. 30.
8.1.0 RC 4 2021. 10. 14.
8.1.0 RC 5 2021. 10. 28.
8.1.0 RC 6 2021. 11. 11.
8.1.0 2021. 11. 25.
8.1.1 2021. 12. 16.
8.1.2 2022. 1. 21.
8.1.3 2022. 2. 17.
8.1.4 2022. 3. 17.
8.1.5 2022. 4. 14.
8.1.6 2022. 5. 12.
8.1.7 2022. 6. 9.
8.1.8 2022. 7. 7.
8.1.9 2022. 8. 4.
8.1.10 2022. 9. 1.
8.1.11 2022. 9. 29.
8.1.12 2022. 10. 28.
8.1.13 2022. 11. 24.
8.1.14 2023. 1. 5.
8.1.15 2023. 2. 2.
8.1.16 2023. 2. 14.
8.1.17 2023. 2. 14.
8.1.18 2023. 4. 13.
8.1.19 2023. 5. 11.
8.1.20 2023. 6. 8.
8.1.21 2023. 6. 6.
8.1.22 2023. 8. 3.
8.1.23 2023. 8. 31.
8.1.24 2023. 9. 28.
8.1.25 2023. 10. 26.
8.1.26 2023. 11. 23.
8.1.27 2023. 12. 21.
8.1.28 2024. 4. 11.
8.1.29 2024. 6. 6.
8.1.30 2024. 9. 26.
8.1.31 2024. 11. 21.
8.1.32 2025. 3. 13.
}}}
8.2.29 (2025. 7. 3.)
||<-2><tablebgcolor=#ffffff,#2D2F34><tablebordercolor=#ffffff,#2D2F34><tablealign=center> 역대 버전 ||
8.2.0 Alpha 1 2022. 6. 9.
8.2.0 Alpha 2 2022. 6. 23.
8.2.0 Alpha 3 2022. 7. 7.
8.2.0 Beta 1 2022. 7. 21.
8.2.0 Beta 2 2022. 8. 4.
8.2.0 Beta 3 2022. 8. 18.
8.2.0 RC1 2022. 9. 1.
8.2.0 RC2 2022. 9. 15.
8.2.0 RC3 2022. 9. 28.
8.2.0 RC4 2022. 10. 13.
8.2.0 RC5 2022. 10. 27.
8.2.0 RC6 2022. 11. 10.
8.2.0 RC7 2022. 11. 24.
8.2.0 2022. 12. 8.
8.2.1 2023. 1. 5.
8.2.2 2023. 2. 2.
8.2.3 2023. 2. 14.
8.2.4 2023. 3. 16.
8.2.5 2023. 4. 13.
8.2.6 2023. 5. 11.
8.2.7 2023. 6. 8.
8.2.8 2023. 7. 9.
8.2.9 2023. 8. 3.
8.2.10 2023. 8. 31.
8.2.11 2023. 9. 28.
8.2.12 2023. 10. 26.
8.2.13 2023. 11. 23.
8.2.14 2023. 12. 21.
8.2.15 2024. 1. 18.
8.2.16 2024. 2. 15.
8.2.17 2024. 3. 14.
8.2.18 2024. 4. 11.
8.2.19 2024. 5. 9.
8.2.20 2024. 6. 6.
8.2.21 2024. 7. 4.
8.2.22 2024. 8. 1.
8.2.23 2024. 8. 29.
8.2.24 2024. 9. 26.
8.2.25 2024. 10. 24.
8.2.26 2024. 11. 21.
8.2.27 2024. 12. 19.
8.2.28 2025. 3. 13.
8.3.26 (2025. 9. 25.)
||<-2><tablebgcolor=#ffffff,#2D2F34><tablebordercolor=#ffffff,#2D2F34><tablealign=center> 역대 버전 ||
8.3.0 Alpha 1 2023. 6. 8.
8.3.0 Alpha 2 2023. 6. 22.
8.3.0 Alpha 3 2023. 7. 6.
8.3.0 Beta 1 2023. 7. 20.
8.3.0 Beta 2 2023. 8. 3.
8.3.0 Beta 3 2023. 8. 17.
8.3.0 RC1 2023. 8. 29.
8.3.0 RC2 2023. 9. 14.
8.3.0 RC3 2023. 9. 28.
8.3.0 RC4 2023. 10. 12.
8.3.0 RC5 2023. 10. 26.
8.3.0 RC6 2023. 11. 9.
8.3.0 2023. 11. 23.
8.3.1 2023. 12. 21.
8.3.2 2024. 1. 18.
8.3.3 2024. 2. 15.
8.3.4 2024. 3. 14.
8.3.6 2024. 4. 11.
8.3.7 2024. 5. 9.
8.3.8 2024. 6. 6.
8.3.9 2024. 7. 4.
8.3.10 2024. 8. 1.
8.3.11 2024. 8. 29.
8.3.12 2024. 9. 26.
8.3.13 2024. 10. 24.
8.3.14 2024. 11. 21.
8.3.15 2024. 12. 19.
8.3.16 2025. 1. 16.
8.3.17 2025. 2. 13.
8.3.18 2025. 3. 13.
8.3.19 2025. 3. 13.
8.3.20 2025. 4. 10.
8.3.21 2025. 5. 8.
8.3.22 2025. 6. 5.
8.3.23 2025. 7. 3.
8.3.24 2025. 7. 31.
8.3.25 2025. 8. 28.
8.4.13 (2025. 9. 25.)
||<-2><tablebgcolor=#ffffff,#2D2F34><tablebordercolor=#ffffff,#2D2F34><tablealign=center> 역대 버전 ||
8.4.0 Alpha 1 2024. 7. 2.
8.4.0 Alpha 2 2024. 7. 16.
8.4.0 Alpha 3 2024. 7. 30.
8.4.0 Alpha 4 2024. 8. 1.
8.4.0 Beta 1 2024. 8. 13.
8.4.0 Beta 2 2024. 8. 15.
8.4.0 Beta 3 2024. 8. 15.
8.4.0 Beta 4 2024. 8. 27.
8.4.0 Beta 5 2024. 9. 11.
8.4.0 RC1 2024. 9. 25.
8.4.0 RC2 2024. 10. 8.
8.4.0 RC3 2024. 10. 23.
8.4.0 RC4 2024. 11. 5.
8.4.0 2023. 11. 20.
8.4.1 2024. 11. 21.
8.4.2 2024. 12. 19.
8.4.3 2025. 1. 17.
8.4.4 2025. 2. 13.
8.4.5 2025. 3. 13.
8.4.6 2025. 4. 10.
8.4.7 2025. 5. 8.
8.4.8 2025. 6. 5.
8.4.9 2025. 7. 3.
8.4.10 2025. 7. 3.
8.4.11 2025. 7. 31.
8.4.12 2025. 8. 28.
8.5.0 RC1 (2025. 9. 25.)
||<-2><tablebgcolor=#ffffff,#2D2F34><tablebordercolor=#ffffff,#2D2F34><tablealign=center> 역대 버전 ||
8.5.0 Alpha 1 2025. 7. 3.
8.5.0 Alpha 2 2025. 7. 17.
8.5.0 Alpha 3 2025. 7. 31.
8.5.0 Alpha 4 2025. 7. 31.
8.5.0 Beta 1 2025. 8. 14.
8.5.0 Beta 2 2025. 8. 28.
8.5.0 Beta 3 2025. 9. 11.
||
링크 파일:홈페이지 아이콘.svg
파일:X Corp 아이콘(블랙).svg
코드 저장소 파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg
1. 개요2. 특징
2.1. 장점2.2. 단점2.3. PHP 7.4 이하 버전 단점2.4. 다른 웹 서비스 개발 기술과의 비교
3. 레거시와 현대화
3.1. 모던 PHP
4. 작동방식(생명주기)5. 개발 환경
5.1. 웹 프레임워크5.2. 각종 ORM5.3. 디버깅5.4. 패키지 관리자5.5. 익스텐션5.6. 익스텐션 관리자
6. 문법7. PHP 코딩 표준안8. 업데이트
8.1. PHP 58.2. PHP 78.3. PHP 8
8.3.1. 8.08.3.2. 8.18.3.3. 8.28.3.4. 8.38.3.5. 8.48.3.6. 8.5
8.4. PHP 9
9. 기타10. PHP로 작성된 웹사이트/프로그램 목록11. 둘러보기

1. 개요


PHP는 대표적인 서버사이드 언어이며 범용 프로그래밍 언어이다. 전 세계 수많은 웹 시스템의 기반이다. C-like 문법[2]으로 되어 있고, CGI보다 나으며, Perl처럼 배열이 연관 배열[3]이라 데이터 넣기가 간편하다. 내장된 웹 관련 함수들이 많아 웹 페이지 제작 시 생산성이 높다는 점에서 사용자가 많다. 1995년 라스무스 러돌프가 만들었고, 지금은 오픈소스 프로젝트로 개발하고있다. PHP 재단(비영리)[4]에서도 코어 개발자를 고용하여 함께 관리하고있다.

PHP라는 이름은 원래 Personal Home Page Tools였는데, 지금은 PHP: Hypertext Preprocessor라는 재귀 약자를 사용하고 있다.

워드프레스, 미디어위키 등의 많은 애플리케이션이 PHP로 작성되어 있다. 웹 서핑 하다 보면 쓰는 곳이 많다는 걸 발견할 수 있다. 한국형 게시판 CMS라이믹스, 그누보드, 중소, 개인 쇼핑몰과 디시인사이드, 더쿠와 같은 대형 인터넷 커뮤니티, 언론사 웹사이트 등 대다수 웹사이트가 PHP로 제작되어 있다.

2. 특징

PHP는 Perl 언어의 영향을 많이 받았다. 변수 이름 앞에 $를 붙이는 것(예: $var), Perl 처럼 배열이 연관 배열로 작동하는 것, 문자열끼리 결합할 때 점(.) 연산자를 사용하는 것이 그 예이다.
{{{#!syntax php
echo "Hello, " . "world!"; // 결과는 "Hello, world!"
}}}

PHP에서는 +는 오직 숫자 덧셈만 하므로 일부 스크립트 언어에서 하던 대로 더하기 기호(+)로 문자열을 결합하려 하면 안 된다. 두 값이 숫자 0으로 형 변환 되어 잘못된 결과가 나온다(예: "Hello, " + "world!"; 결과는 0).

PHP의 큰 특징 중 하나는 무상태성(Stateless)으로, HTTP 프로토콜과 마찬가지로 상태를 유지하지 않는 성질이다. PHP 웹 서버에 요청하면, 해당 스크립트를 실행한 뒤 완전히 종료하고, 그다음 새 요청이 들어오면 처음부터 시작하는 방식이다. 이 때문에 PHP에서 싱글톤 패턴을 구현하면, 객체는 한 요청에 의한 작업이 끝날 때까지만 유지된다. 이러한 특성으로 인해 메모리 관리가 쉽고, 사용자(브라우저 요청, cli 입력 등)가 잘못된 입력을 해서 오류가 났을 때 개별적으로 처리하게 되므로 안전하지만, 상태를 유지할 수 없기에 기본 배포되는 PHP로는 DB 커넥션 풀을 만들 수가 없다.[5]

PHP는 다른 스크립트 언어와 달리 실행 중에 타입을 체크한다. 타입들이 점차 추가 되었으며 PHP 7 이후로 declare(strict_types=1)을 선언하면 암시적 형변환이 중단되고 타입체크가 강화된다.

PHP 파일은 <?php ... ?>로 이루어진 코드 실행 영역이 있다. 변수 하나만 출력한다면 <?=$var?> 형태로 줄여 쓸 수도 있다. 원래 short_open_tags 설정값이 off라면 이것도 같이 안되지만, PHP 5.4부터는 short_open_tags 설정값에 상관없이 항상 <?=$var?> 형태로 쓸 수 있게 되었다. 여담인데 <? ... ?>는 2000년대 중반부터 거의 안 쓴다. 이렇게 줄여 쓰는 방식은 비활성화되어 있는데 사용하려면 php.ini에서 short_open_tags 설정을 on으로 바꾸어야 한다. 비활성화된 이유는 XML의 문서 시작 표시인 <?xml version="1.0" encoding="UTF-8"?> 같은 구문과 충돌했기 때문이다. PHP가 처음 나왔을 때는 HTML만 있었기 때문에 줄여 쓰는 방식이 문제가 없었지만, HTML에 XML의 문법을 도입한 XHTML 1.0이 나오면서 충돌이 일어났고, 결국 저 옵션의 기본값이 off 로 변경된 것. 다행히 HTML5에서는 XML 문법이 빠졌다.

2004년 쯤에 WYSIWYG 기반 에디터를 사용할 때 <?php ... ?>로 이루어진 코드 실행 영역을 올바르지 않은 태그로 잘못 인식하는 문제를 회피하기 위해 <script language="php"> ... </script>[6] 태그를 사용하기도 했다. 그렇지만 이 태그는 JavaScript에서 쓰는 것과 혼동될 수 있어서 PHP 7부터 삭제되었다.

PHP 위원회는 새 버전의 기능을 RFC 문서로 제안받고, RFC에 올라온 사항들을 찬반 투표에 부쳐 찬성이 2/3을 넘길 경우 기능을 추가한다. 레딧, PHP 메일링 리스트 등에서 토론이 이루어진다. 새 기능 RFC 제안 사항 찬반 투표 진행과 결과를 공개하는 사이트.

PHP는 오픈 소스이며 포팅된 곳이 많아 거의 모든 웹 서버에서 실행할 수 있다. 유닉스(리눅스), 윈도우, macOS 모두 지원한다. PHP 공식 사이트에서는 소스 코드를 공개하고 있고, 리눅스 등의 유닉스 계열 OS에서 컴파일하는 방법을 알려주고 있다. 대부분의 경우 직접 컴파일할 필요는 없는데, 유명 리눅스 배포본의 공식 저장소에는 PHP 설치 패키지를 기본으로 제공하기 때문이다. 별도의 저장소를 추가하면 버전도 입맛대로 설치할 수 있다. PHP 5.5 버전부터 64비트 버전이 나왔다. 윈도우용은 PHP 공식 사이트에서 직접 실행 파일로 만들어서 제공한다. 윈도우용의 경우 동작 방식의 차이 때문에 IISNGINX에서 돌리는 PHP는 Non-Thread Safe 버전으로, 아파치에서 돌리는 PHP는 Thread-Safe 버전으로 따로 나온다. 맥 OS에는 이미 설치가 되어 나오는데, 더 최신 버전을 설치하고 싶으면 맥 OS의 패키지 관리자인 Homebrew(홈브루)를 통해서 설치할 수 있다.

2.1. 장점

2.2. 단점

효율적인 디버깅 환경 설정법: 위의 단점들을 겪지 않으려면 다음과 같이 해야한다. PHP로 개발할 때는 숨겨진 기본값들을 수동으로 수정하고 mysqli 는 mysqli_report, PDO면 error_mode 등 설정이 필요하다. 그 외 다양한 디버깅 옵션을 활성화한 후 디스플레이 에러를 끄고 로깅과 xdebug와 같은 디버깅 툴을 사용하는것이 권장된다. 다른 언어에서 제공하는 개발 환경과 비슷한 수준을 만들 수 있다. PHP 프레임워크들은 이런 설정값들이 기본적으로 적용되어 있어 스택 트레이스 등 상세한 오류정보를 알려주고 개발 편의성이 좋다.

2.3. PHP 7.4 이하 버전 단점

2.4. 다른 웹 서비스 개발 기술과의 비교

종종 Java 진영의 JSP와 비교되기도 했었다.

한국의 SI 업계에서는 JSP 개발자로 넘어가는 일이 많았는데, 공공 기관 프로젝트를 따내려면 정부에서 만든 전자정부프레임워크를 써야 가산점을 받아서 유리해지기 때문이다. 민간의 대규모 서비스는 PHP 5버전 시절 OOP 지원이 미흡했을 때 유지 보수성 등을 이유로 Java 기반을 요구하는 경우가 많았다.

일본이나 유럽 특히 프랑스에서는 PHP를 많이 쓰고 있다.[12]

2023년 현재에는 다음과 같은 기술들이 전 세계 웹 서비스 개발에 주로 사용되고 있다.

3. 레거시와 현대화


2000년대 초반 국내에서는 네이버도 PHP를 사용했다. 그 당시 PHP는 실행속도가 느린 데다 객체 지향을 제대로 지원하지 않아 협업이 힘들다는 이유로, 2000년대 중반 JavaC#ASP.NET으로 옮겨갔다. PHP에서 제대로 된 객체 지향이 지원한 것은 2009년 발표된 PHP 5.3부터이다. 페이스북은 이전에는 PHP를 주 언어로 사용하다가 2014년 자사에서 PHP 기반으로 개발한 hack이라는 언어를 사용한다.[13]

과거 PHP에서는 MVC 패턴[14] 적용이 어려웠지만, PHP 5.3에 네임스페이스가 도입 되면서 패키지를 구성할 수 있게 되었고 객체 지향과 MVC 패턴으로 설계된 프레임워크가 많이 개발되었다. 그러나 오래된 CMS들은[15] 보안과 유지보수에 취약하게 작성되어 있었고, 그 밖에도 소규모 프로젝트에서는 관리가 힘든 경우가 많았다. 예를 들어 제로보드는 SQL 쿼리에 들어갈 변수들에 '준비된 실행문'(Prepared Statement)이라는 안전한 방식을 사용하지 않았는데, 그 결과 SQL 인젝션 공격을 받아 뽐뿌 개인정보 해킹 사건 등이 발생했다. 반면 2013년 출시된 XE의 경우 시작부터 MVC 아키텍처 구조였으며 SQL 인젝션 문제를 설계 변경으로 근본적으로 해결하였다. 드루팔의 경우는 2015년 드루팔 8부터 컴포저를 지원하고 개발이 쉬운 패키지 모듈로 개선되었다.

3.1. 모던 PHP

PHP 는 오랜 역사동안 변화와 발전을 거듭했다. 특히 PHP 5.3 버전이후부터 네임스페이스와 객체 지향 프로그래밍(OOP) 패러다임이 본격적으로 도입되고, 다양한 기술적 개선, 표준화가 이루어지면서 오늘날 우리가 '모던 PHP' 라고 부르는 형태가 되었다.
과거 PHP 코드는 스크립트 위주의 절차지향적으로 작성된 코드들이 많았고 2000년에 출시된 PHP 4 는 클래스 문법이 제한적이였다. PHP 5.3 이후로는 점점 객체 지향 프로그래밍이 사용되기 시작했으며 PHP 7.0 버전부터는 더욱 견고한 OOP 언어로서의 특성을 갖추게 되었다. 이러한 변화를 바탕으로 PHP 커뮤니티에서는 5.2 버전까지를 고전 PHP, 5.3 ~ 5.6 5년간을 과도기, 7.0 이후 버전은 현대 PHP로 분리해서 보는 시각이 있다. 현재는 2023년기준 워드프레스 통계에서도 PHP 5.6 이하는 점유율이 5% 이하로 떨어지는 등[16] 단순히 버전 만으로 모던과 아닌 것을 구분하는건 무의미하고, 코드설계로 평가해야한다.
심포니 , 라라벨, Yii 등 PHP 프레임워크의 등장은 개발방식에 큰 변화를 가져왔다. 모델-뷰-컨트롤러(MVC) 아키텍처 와 같은 체계적인 설계가 적용되어 협업 관련 문제는 대부분 해소되었다.[17]. PHP의 좋지 않은 인식에 영향 끼친 상다수는 과거 5.2 시절에 절차지향적으로 작성된 일부 CMS들과 [18] 제대로 된 디자인 패턴이나 프레임워크가 확립되지 않아,[19] 보안 따위는 가볍게 날려버린 코드를 짜는 방법들이 있어서 그걸 쓰는 사람이 많았고, 'PHP는 안전하지 않다'라는 이미지를 심는 데 일조하였다.

이러한 문제를 해결하고 PHP 생태계 발전을 도모하기위해 PHP Framework Interop Group 이 출범하여 PSR 규칙[20] 을 제안하였다. 이로 인해 프레임워크가 정형화되고 상호운용성이 높아지게되었다. PHP 로 웹개발을 할 때는 PSR 규칙을 지키는 것이 권장된다.
다른 언어 플랫폼처럼 모듈 등 생태계를 지원하기 위해 Composer라는 의존성 관리 도구가 나와 패키지 구성 과정을 간소화할 수 있게 되었다. PHP 라이브러리는 패키지스트에서 찾을 수 있다. https://packagist.org
컴포저에는 또다른 기능이 있는데 바로 PSR-4 에 정의된 오토로딩이다. 오토로딩은 php 파일경로를 include, require 등으로 일일히 코드에 적지 않아도 네임스페이스 기반으로 자동으로 호출할 수있게 해준다.
PHP는 느슨한 타입 검사와 extract()로 변수 생성하기 등 보안 취약점이 지적되었다. 타입 강화는 PHP 7부터 개선된 부분이다. 초창기부터 이어져 온 특유의 함수 이름 비일관성은 여전히 고쳐나가는 중이다. PHP 8.1부터는 보안 문제로 지적받던 $GLOBALS 배열에 쓰기 작업하는 것이 금지되었다.

웹에 올라와 있는 PHP 비판 문서는 유심히 봐야 한다. 잘못된 내용을 적을 때도 있고, 현시점에서 해결된 문제도 떡하니 올려놓는 경우도 많다. 2015년 7.0이 나오기 이전 당시 버전인 5.x 시절에 작성된 글이 많다. 특히 PHP: 잘못된 디자인의 프랙탈 번역본이 퍼져 있는데, 이 글은 2012년에 작성되었고 PHP 5.4 버전 시점의 이야기이다. PHP 7.0에서 해당 글에 나온 많은 결함이 수정되었다. 2017년에 슬랙에서 작성한 PHP의 장단점 PHP에 대해 진지하게를 참고하는 편이 낫다. 물론 이것마저도 PHP 8.0에서 몇 가지 개선되었다. 결론을 말하자면, 개발자가 보안에 대해 인지하고 방어하는 코드를 쓰자는 것.

4. 작동방식(생명주기)

5. 개발 환경


배포 전에 오류를 잡고 개발 생산성을 높이기 위해서는 IDE를 쓰는 것이 좋다. IDE는 터미널, 디버거, 확장(Extension), 코드 편집기 등 개발에 도움울 주는 각종 기능들이 담겨 있다. 작업 중인 코드상의 문제를 추적해 주거나 스타일 수정을 해 주는 패키지와의 연동을 통해 GUI상에서 코드 퀄리티 관리를 자동으로 해 주는 편리한 기능도 제공한다.

VS Code 같은 에디터에서 디버깅 도구인 Xdebug를 설치하고 사용하는 방법도 있다. 특히 VS Code는 MS가 전폭적으로 밀어주고 있어 각종 플러그인 갯수가 늘어나는 중이다.

AI 가 통합된 커서 에디터나 아마존의 kiro 등은 vscode 를 수정하여 만들어졌는데
vscode 와 같은 플러그인을 설치해서 쓸수있다.

IDE 중에는 JetBrains사에서 개발한 유료 IDE PhpStorm이 편리한 코드 에디터, 각종 프레임워크 지원, DB 관리 통합, 신속한 지원에 힘입어 점유율을 늘려가고 있다. PhpStorm은 PHP뿐만 아니라 JavaScript, TypeScript, CSS지원 등 웹스톰의 기능들까지 전부 포함하고 있다.

린터로는 PHP CS Fixer가 인기 있고 정적분석기는 PHPStan 이 주로 쓰인다.

5.1. 웹 프레임워크

프레임워크란 개발의 방향성을 잡을 수있게 도와 주는 틀이 되는 소프트웨어다. 웹에서는 주로 MVC 아키텍처가 주류이다.

5.2. 각종 ORM

ORM(Object-Relation Mapper)이란 SQL 쿼리를 사용하지 않고 객체 지향적으로 데이터베이스와 상호 작용 할 수 있게 도와주는 도구이다. 물론 만능은 아니라서 복잡한 DB 작업은 SQL을 써야 할 경우도 있고 기본적으로 데이터베이스를 잘 알아야 한다.

ORM 구현 라이브러리

5.3. 디버깅

5.4. 패키지 관리자

PHP 의 패키지 관리자는 컴포저(Composer) 가 있다. PHP 프로젝트에 필요한 라이브러리들을 관리한다.
다운받은 프로그램은 composer.json 파일에 기록되는데 이를 의존성 관리라고 한다.
PHP 로 작성된 프로그램의 배포는 패키지스트 사이트를 이용한다.

5.5. 익스텐션

PHP 에는 PHP 엔진의 기능을 확장하여 C나 C++ 등으로 만든 익스텐션들이 있다.
* PECL(The PHP Extension Community Library) 피클이라고 읽는다. PECL은 속도 향상을 위해 C 언어 , C++ 등으로 작성된 PHP 익스텐션들을 배포하는 곳이다. PECL에 패키지를 올리려면 몇 가지 절차가 있는데 해당 익스텐션의 사용법을 php.net 에 문서를 올려야한다. 가끔 PHP 내장 함수도 아닌데 공식 문서에 설명이 있는 것은 이 때문이다.

예전에 PECL에서 인기 있던 라이브러리가 PHP 새 버전에서 통합되는 경우도 있었다. PHP 5.2의 json , PHP 5.5의 opcache 등이 그 예이다.

5.6. 익스텐션 관리자

PECL, Phar 은 PHP 익스텐션 관리 프로그램이다.
2025년에는 새로운 익스텐션 프로그램인 PIE 가 출시되었다. 위의 두 프로그램과 달리 컴포저가 관리하는 composer.json 에 필요한 익스텐션이 적혀있으면 그걸 기준으로 다운받고 관리한다.

6. 문법

파일:상세 내용 아이콘.svg   자세한 내용은 PHP/문법 문서
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[PHP/문법#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
의 [[PHP/문법#|]] 부분을
참고하십시오.

7. PHP 코딩 표준안

PHP 5.3 이후 PHP 진영에도 프레임워크들이 나오면서 코딩 표준과 프레임워크들 호환에 관한 규칙을 PHP 프레임워크 그룹에서 정했다.

8. 업데이트

PHP의 업데이트 정책은 7.0 부터는 최신 버전 및 하위 2개 버전까지만 업데이트를 유지한다. 예를 들어 8.3이 나오면 8.2과 8.1는 지원하고, 8.0은 지원을 종료한다. PHP 재단을 설립한 뒤로 보안 업데이트가 1년 연장되어 PHP 8.1 부터는 총 4년의 지원을 받는다. 많이 쓰이는 몇몇 리눅스의 배포판(대표적으로 레드햇 리눅스우분투)은 PHP의 업데이트가 종료된 이후에도 독자적으로 계속 보안 업데이트를 지원한다. 이런 유명 배포판들은 보통 서버용으로 써서 지원 기간이 길고(특히 LTS로 부르는 장기 지원 버전), 호환성을 위해 해당 메이저 버전 내의 공식 저장소 PHP 버전을 바꾸지 않기 때문에 보안 업데이트를 제공하는 것이다. 그렇더라도, 성능과 편의성이 향상된 최신 버전을 쓰는 것이 좋다.

8.1. PHP 5

8.2. PHP 7

PHP 7의 발표 행보는 상당히 빠르다. 2015년 6월 11일에 알파 1이 나온 이후 한 달 만인 7월 10일에 베타 1이 나왔고, 8월 18일 릴리스 후보안 1(RC1)이 나왔다. 12월 3일에 일반 이용자용(GA)이 나왔다. PHP 7은 PHP 5.6보다도 두배 빠르고 CPU, 메모리 사용량이 대폭 감소하였다. 함수 인자와 반환값에 타입을 지정할 수 있게 되었다.
// 이전 방식
// 삼항 연산자로 처리 ? 앞에 값이 있으면 대입하고 없으면 뒤엣것을 쓴다.
$user = (isset($_GET['user'])) ? $_GET['user'] : '';

// PHP7.0 부터는 같은 표현식이 간단해진다.
// ??(null 병합 연산자) 앞에 변수가 없으면 뒤엣것을 쓴다.
$user = $_GET['user'] ?? '';
}}}

8.3. PHP 8

8.3.1. 8.0

//아래는 8.0
$country = $session?->user?->getAddress()?->country;
}}}class PostsController
{
#[Route("/api/posts/{id}", methods: ["GET"])]
public function get($id) { /* ... */ }
}
}}}htmlspecialchars($string, double_encode: false);
//두 번째 인자에 double_encode 이라는 이름이 있어 함수를 내부를 보지 않고도 false가 어떤 역할인지 보는 데 도움된다.
}}}

8.3.2. 8.1

8.3.3. 8.2

2022년 11월 셋째 주 출시 예정이었으나, 중간에 버그가 발견되어 12월 8일에 발표되었다.

8.3.4. 8.3

2023년 11월 23일 정식 배포 되었다.
유효하지 않은 직렬화 문자열을 역직렬화 시도 할 때, 기존의 E_NOTICE에서 E_WARNING로 에러 수준이 향상되는 등의 변경점이있다.

8.3.5. 8.4

2024년 11월 배포되었다.

8.3.6. 8.5

2025년 11월 배포 예정으로 개발 중이다.

C언어 인터프리터 속도를 개선하는 Tail Call 에 관한 글이 있는데 PHP에도 적용 중이라고 한다.

8.4. PHP 9

2026년~2027년 사이에 출시할 예정인 버전이다. 2018년부터 조금씩 바꾼 PHP 엔진 개선점을 반영하는 버전이라고 한다.
모두 PHP 내부 메일링 리스트와 PHP RFC 문서 등지에서 예고, 논의했던 것들이다.[36] 특히 정의되지 않은 변수에 관해서는 기존 코드를 변경할 시간이 필요하므로 지금부터 준비하라고 하고 유명한 라이브러리들은 이미 준비 중이다. PHP CS Fixer 등 린터 프로그램도 있고 2025년 기준으로도 벌써 경고가 6년 차에 접어들어 웬만한 프로그램들은 거의 적응 단계에 들어갔다.

9. 기타

}}}"PAAMAYIM NEKUDOTAYIM"[39]히브리어로 2개의 쌍점(::)이라는 뜻이다. 문제는 히브리어를 모르는 대부분의 전 세계 개발자들에게는 매우 생소한 표현이였다는 점인데 PHP 5.4부터는 2개의 쌍점을 오류 메세지에 출력하도록 변경되었고 PHP8부터는 T_DOUBLE_COLON으로 완전히 변경되었다.

10. PHP로 작성된 웹사이트/프로그램 목록

나무위키에 단독 문서가 있는 것만 추가한다(가나다순).
또한, CMS, Laravel로 작성된 웹사이트는 제외

11. 둘러보기

TIOBE 선정 올해의 프로그래밍 언어 / PHP
{{{#!folding [펼치기 / 접기] 2003년
C++
2004년
PHP
2005년
Java
}}} ||


[1] 구, Zend Technologies Ltd.[2] 사실 PHP는 Perl과 좀 더 유사하다. 다만 C 언어에서 파생된 문법을 사용하므로 C-like로 기술하였다.[3] 자료구조로는 해시맵.[4] https://thephp.foundation[5] 그런데 swoole, 로드러너와 같이 프로세스가 종료되지 않게 실행하는 프로그램을 쓰면 상태가 유지(stateful)되기 때문에 DB 커넥션 풀도 만들 수 있다. 이렇게 할 경우, 기존 PHP 코드를 수정해야 하는 단점이 있으며 앞서 말한 무상태성으로서 가졌던 장점도 사라지게 된다.[6] 스크립트의 언어 속성으로 language를 쓰는 것 또한 사실은 비표준이다. 표준대로라면 type으로 쓰는 것이 옳다. HTML4 시절부터 두 가지 형태가 혼용되고 있었는데, HTML5에서 후자가 살아남은 것.[7] 메모리나 CPU 등에 앞서 저장된 것을 말한다. 여기서는 php Opcache 코드.[8] 기존 함수는 지원하지만, 서서히 없애고 있다.[9] 대다수의 웹은 PHP 코드 처리보다 DB 가 더 느리기 때문에 DB 튜닝, 쿼리 개선이 성능 향상에 더 영향이 크고 PHP 성능도 향상되어 유저가 체감할 정도는 아니다.[10] 이 옵션은 PHP 5.1부터 존재했는데 기본값이 off 로 되어있어서 개발자들이 그 존재를 모르는경우도 있었고, 문제 해결의 어려움에 PHP를 떠나는 경우도 있었다.[11] Notice 수준의 로그로 보여주는데 php.ini에서 설정을 껐으면 모르고 지나치기 쉽다.[12] 통계[13] Facebook이 새로운 프로그래밍 언어 Hack 공개, 2014-03-21, 클리앙[14] (Model)-출력(View)-입력 및 제어(Controller)에 해당하는 부분을 분리해서 작성하는 프로그래밍 방식.[15] PHP 5.3 이전에 개발된 프로그램[16] https://wordpress.org/about/stats/[17] 루비 온 레일즈 등의 영향을 받은 다양한 MVC 패턴을 지원하는 웹 개발 프레임워크들이 개발되었기 때문에 어떻게 보면 오히려 난이도가 비슷하거나 낮아졌다고 할 수 있다. Laravel 웹 프레임워크 같은 경우에는 GitHub에서 Python의 대표적인 웹 개발 프레임워크인 Django의 star 수를 뛰어넘었다.[18] 그누보드[19] 예) 코드이그나이터 2 버전[20] PHP 프로그램 작성 권장 규칙[21] PHP 특징인 무상태성이다. 종료되면서 해당 프로그램의의 변수, 객체, DB 커넥션 등등이 모두 사라진다.[22] 사람들의 오해가 있는데 웹 서버에서 실행하는 PHP는 1요청당 프로세스가 생성되고 종료되는 것이 아니다. php-fpm 설정에서 max_request 값으로 지정.[23] https://www.phpinternalsbook.com/php7/extensions_design/php_lifecycle.html[24] PHP 특성상 TS 모드로 리눅스에서 수행하는 것이 더 좋다는 걸 알 수 있다.[25] PHP에는 제네릭이 없는데 라스무스는 매년 열리는 PHP 컨퍼런스인 phpCE 2018에서 제네릭 구현은 가능하지만 도입 시 PHP가 실행 중 타입 체크를 하게 되어 큰 성능 저하가 있기 때문에 반대한다고 밝혔다.[26] 같은 약타입 인터프리터 언어인 파이썬은 제네릭이 있는데 파이썬은 실행 중에는 타입 체크를 전혀 안 하기 때문에 제네릭은 코드 작성할 때만 있는 것이라 성능 저하가 없다. 여담으로 자바는 컴파일되면서 제네릭이 삭제되기에 성능에 지장이 없다.[27] 아파치 HTTP 서버, NGINX[28] 이미 설치된 PHP 확인법은 phpinfo 함수로 확인하거나 윈도우 cmd나 리눅스 터미널에서 php -v를 입력하면 정보가 뜬다.[29] 훗날 PHP 7.0에서 재설계되어 순환 참조 문제가 해결되었다.[30] 배열을 []로 선언하기, 배열을 리턴하는 함수를 곧바로 접근하기 등. 이것은 이미 오래전부터 JavaScript에서 구현된 것들이다. 이 외에도 JavaScript에서 유래한 일부 기능이 추가되었다.[31] 새 기능 소개[32] call by reference[33] null coalescing operator[34] 즉 PHP 7에서 버그를 잡지 않고 작성한 코드들은 PHP 8에서 실행하려면 버그를 잡아야 한다.[35] DB 비밀번호, 계정 정보 등등[36] PHP 메일링 리스트를 표시하는 사이트[37] 여담으로 header_remove로 지울 수 있는데 지우지 않아서 프로그램 정보가 노출되면 서버 보안에 취약할 거라는 지적이 있다. #StackOverflow[38] 외국에서는 기업이 오픈 소스 프로젝트를 이용하여 자사의 서비스를 구축한 경우 그 프로젝트에 기여(contribute)를 하는 일이 흔하다.[39] 올바른 표현은 paamayim nekudatayim, פעמיים נקודותיים[40] 여담으로 2025년에 공개된 웹사이트 소스코드에, SQL injection 취약점도 있었다고 한다.[41] Taking PHP Seriously