나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2026-10-29 19:17:24

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
문서의 [[#|]] 부분}}}}}}

파일:한시적 넘겨주기 아이콘.svg  
#!if 리스트 == null
{{{#!html 2026년 10월 발견된 PHP의 보안 취약점}}}에 대한 내용은 {{{#!if 문서명1 != null
[[PHP2Shell]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if (문단1 == null) != (앵커1 == null)
의 }}}}}}{{{#!if 문서명1 = 문서명1 != null ? 문서명1 : calleeTitle
{{{#!if 문단1 != null & 앵커1 == null
[[PHP2Shell#s-|]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
[[PHP2Shell#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html }}}에 대한 내용은 {{{#!if 문서명2 != null
[[]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if (문단2 == null) != (앵커2 == null)
의 }}}}}}{{{#!if 문서명2 = 문서명2 != null ? 문서명1 : calleeTitle
{{{#!if 문단2 != null & 앵커2 == null
[[#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
[[#|]] 부분을}}}}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 {{{#!if 문서명3 != null
[[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if (문단3 == null) != (앵커3 == null)
의 }}}}}}{{{#!if 문서명3 = 문서명3 != null ? 문서명3 : calleeTitle
{{{#!if 문단3 != null & 앵커3 == null
[[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
[[#|]] 부분을}}}}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 {{{#!if 문서명4 != null
[[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if (문단4 == null) != (앵커4 == null)
의 }}}}}}{{{#!if 문서명4 = 문서명4 != null ? 문서명4 : calleeTitle
{{{#!if 문단4 != null & 앵커4 == null
[[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
[[#|]] 부분을}}}}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 {{{#!if 문서명5 != null
[[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if (문단5 == null) != (앵커5 == null)
의 }}}}}}{{{#!if 문서명5 = 문서명5 != null ? 문서명5 : calleeTitle
{{{#!if 문단5 != null & 앵커5 == null
[[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
[[#|]] 부분을}}}}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 {{{#!if 문서명6 != null
[[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if (문단6 == null) != (앵커6 == null)
의 }}}}}}{{{#!if 문서명6 = 문서명6 != null ? 문서명6 : calleeTitle
{{{#!if 문단6 != null & 앵커6 == null
[[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
[[#|]] 부분을}}}}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 {{{#!if 문서명7 != null
[[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if (문단7 == null) != (앵커7 == null)
의 }}}}}}{{{#!if 문서명7 = 문서명7 != null ? 문서명7 : calleeTitle
{{{#!if 문단7 != null & 앵커7 == null
[[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
[[#|]] 부분을}}}}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 {{{#!if 문서명8 != null
[[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if (문단8 == null) != (앵커8 == null)
의 }}}}}}{{{#!if 문서명8 = 문서명8 != null ? 문서명8 : calleeTitle
{{{#!if 문단8 != null & 앵커8 == null
[[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
[[#|]] 부분을}}}}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 {{{#!if 문서명9 != null
[[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if (문단9 == null) != (앵커9 == null)
의 }}}}}}{{{#!if 문서명9 = 문서명9 != null ? 문서명9 : calleeTitle
{{{#!if 문단9 != null & 앵커9 == null
[[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
[[#|]] 부분을}}}}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 {{{#!if 문서명10 != null
[[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if (문단10 == null) != (앵커10 == null)
의 }}}}}}{{{#!if 문서명10 = 문서명10 != null ? 문서명10 : calleeTitle
{{{#!if 문단10 != null & 앵커10 == null
[[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
[[#|]] 부분을}}}}}}}}}
#!if 리스트 != null
한시적 넘겨주기로 연결되는 다른 문서에 대한 내용은 아래 문서를
참고하십시오.
#!if 리스트 != null
{{{#!if 문서명1 != null || 문서명1 == null & (문단1 != null || 앵커1 != null)
 * {{{#!if 설명1 != null
2026년 10월 발견된 PHP의 보안 취약점: }}}{{{#!if 문서명1 != null
[[PHP2Shell]] {{{#!if (문단1 == null) != (앵커1 == null)
문서의 }}}}}}{{{#!if 문서명1 = 문서명1 != null ? 문서명1 : calleeTitle
{{{#!if 문단1 != null & 앵커1 == null
[[PHP2Shell#s-|]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
[[PHP2Shell#|]] 부분}}}}}}}}}{{{#!if 문서명2 != null || 문서명2 == null & (문단2 != null || 앵커2 != null)
 * {{{#!if 설명2 != null
: }}}{{{#!if 문서명2 != null
[[]] {{{#!if (문단2 == null) != (앵커2 == null)
문서의 }}}}}}{{{#!if 문서명2 = 문서명2 != null ? 문서명2 : calleeTitle
{{{#!if 문단2 != null & 앵커2 == null
[[#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
[[#|]] 부분}}}}}}}}}{{{#!if 문서명3 != null || 문서명3 == null & (문단3 != null || 앵커3 != null)
 * {{{#!if 설명3 != null
: }}}{{{#!if 문서명3 != null
[[]] {{{#!if (문단3 == null) != (앵커3 == null)
문서의 }}}}}}{{{#!if 문서명3 = 문서명3 != null ? 문서명3 : calleeTitle
{{{#!if 문단3 != null & 앵커3 == null
[[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
[[#|]] 부분}}}}}}}}}{{{#!if 문서명4 != null || 문서명4 == null & (문단4 != null || 앵커4 != null)
 * {{{#!if 설명4 != null
: }}}{{{#!if 문서명4 != null
[[]] {{{#!if (문단4 == null) != (앵커4 == null)
문서의 }}}}}}{{{#!if 문서명4 = 문서명4 != null ? 문서명4 : calleeTitle
{{{#!if 문단4 != null & 앵커4 == null
[[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
[[#|]] 부분}}}}}}}}}{{{#!if 문서명5 != null || 문서명5 == null & (문단5 != null || 앵커5 != null)
 * {{{#!if 설명5 != null
: }}}{{{#!if 문서명5 != null
[[]] {{{#!if (문단5 == null) != (앵커5 == null)
문서의 }}}}}}{{{#!if 문서명5 = 문서명5 != null ? 문서명5 : calleeTitle
{{{#!if 문단5 != null & 앵커5 == null
[[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
[[#|]] 부분}}}}}}}}}{{{#!if 문서명6 != null || 문서명6 == null & (문단6 != null || 앵커6 != null)
 * {{{#!if 설명6 != null
: }}}{{{#!if 문서명6 != null
[[]] {{{#!if (문단6 == null) != (앵커6 == null)
문서의 }}}}}}{{{#!if 문서명6 = 문서명6 != null ? 문서명6 : calleeTitle
{{{#!if 문단6 != null & 앵커6 == null
[[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
[[#|]] 부분}}}}}}}}}{{{#!if 문서명7 != null || 문서명7 == null & (문단7 != null || 앵커7 != null)
 * {{{#!if 설명7 != null
: }}}{{{#!if 문서명7 != null
[[]] {{{#!if (문단7 == null) != (앵커7 == null)
문서의 }}}}}}{{{#!if 문서명7 = 문서명7 != null ? 문서명7 : calleeTitle
{{{#!if 문단7 != null & 앵커7 == null
[[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
[[#|]] 부분}}}}}}}}}{{{#!if 문서명8 != null || 문서명8 == null & (문단8 != null || 앵커8 != null)
 * {{{#!if 설명8 != null
: }}}{{{#!if 문서명8 != null
[[]] {{{#!if (문단8 == null) != (앵커8 == null)
문서의 }}}}}}{{{#!if 문서명8 = 문서명8 != null ? 문서명8 : calleeTitle
{{{#!if 문단8 != null & 앵커8 == null
[[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
[[#|]] 부분}}}}}}}}}{{{#!if 문서명9 != null || 문서명9 == null & (문단9 != null || 앵커9 != null)
 * {{{#!if 설명9 != null
: }}}{{{#!if 문서명9 != null
[[]] {{{#!if (문단9 == null) != (앵커9 == null)
문서의 }}}}}}{{{#!if 문서명9 = 문서명9 != null ? 문서명9 : calleeTitle
{{{#!if 문단9 != null & 앵커9 == null
[[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
[[#|]] 부분}}}}}}}}}{{{#!if 문서명10 != null || 문서명10 == null & (문단10 != null || 앵커10 != null)
 * {{{#!if 설명10 != null
: }}}{{{#!if 문서명10 != null
[[]] {{{#!if (문단10 == null) != (앵커10 == null)
문서의 }}}}}}{{{#!if 문서명10 = 문서명10 != null ? 문서명10 : calleeTitle
{{{#!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 로고.svg ClojureS · COBOLT · CoffeeScript · Common LispS · CrystalT
D파일:D(프로그래밍 언어) 로고.svg DT · 파일:Dart 심볼.svg DartT
EElixir · 파일:Elm 로고.svg elmT · 파일:Erlang 로고.svg Erlang
F파일:F F#T · Factor · 파일:fennel-logo.svg FennelS · 파일:forth.png Forth · FortranT
GGNU Octave · 파일:Go 로고.svg GoT · 파일:Groovy 로고.svg GroovyT
H파일:Haskell 로고 심볼.svg HaskellT · HolyCT · HaxeT
J파일:Java 로고.svg JavaT · 파일:JavaScript 로고.svg JavaScript · 파일:julia-dots.svg Julia
K파일:Kotlin 심볼.svg KotlinT
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 로고.svg Perl · 파일:PHP 로고.svg PHP · Processing · Prolog · PureScriptT · 파일:Python 심볼.svg Python
QQ#T · QML
R파일:R 로고.svg R · 파일:racket-logo.svg RacketS · Raku · ReasonMLT · 파일:Rocq 로고.svg RocqTP · 파일:Ruby 로고.svg Ruby · 파일:Rust 로고.svg파일:Rust 로고 화이트.svg RustT
SSAS · 파일:Scala 심볼.svg ScalaT · SchemeS · 파일:스크래치(교육 플랫폼) 로고.svg ScratchV · sed · Shell Script · Smalltalk · 파일:Swift 심볼 배경.svg SwiftT
T파일:Typescript_logo_2020.svg TypeScriptT
UUdonV · 파일:uiua-logo.png Uiua
VVisual Basic · Visual Basic .NET · Visual Basic for Applications · vvvvV
XXSharp
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 2025 ]
{{{#!wiki style="margin: -5px -1px"
<tablewidth=100%><tablebgcolor=transparent><colbgcolor=#11a500><colcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 <colbgcolor=#ff1100><colcolor=#fff> 직업 부문 상위 10개 프로그래밍 언어
1 Python 1 Python
2 Java 2 SQL
3 C++ 3 Java
4 SQL 4 JavaScript
5 C# 5 TypeScript
6 JavaScript 6 C#
7 TypeScript 7 C++
8 C 8 HTML
9 Shell 9 Go
10 Go 10 Shell }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ Stack Overflow 2025 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=#ffa500><colcolor=#fff> 2025년 Stackoverflow 설문조사 상위 25개 프로그래밍 언어
1 JavaScript <colbgcolor=#ffa500><colcolor=#fff> 14 Rust
2 HTML & CSS 15 Kotlin
3 SQL 16 Lua
4 Python 17 어셈블리어
5 Bash/Shell 18 Ruby
6 TypeScript 19 Dart
7 Java 20 Swift
8 C# 21 R
9 C++ 22 Groovy
10 PowerShell 23 Visual Basic
11 C 24 VBA
12 PHP 25 MATLAB
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년 10월 TIOBE 검색어 점유율 상위 20개 프로그래밍 언어
1 Python <colbgcolor=#2777c2><colcolor=#fff> 11 Fortran
2 C 12 Perl
3 C++ 13 R
4 Java 14 PHP
5 C# 15 Assembly language
6 JavaScript 16 Rust
7 Visual Basic 17 MATLAB
8 Go 18 Scratch
9 Delphi / Object Pascal 19 Ada
10 SQL 20 Kotlin }}}}}}}}}{{{#!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년 11월 PYPL 검색어 점유율 상위 20개 프로그래밍 언어
1 Python <colbgcolor=green><colcolor=#fff> 11 Ada
2 Java 12 TypeScript
3 C++ 13 MATLAB
4 Objective-C 14 Kotlin
5 R 15 PowerShell
6 JavaScript 16 Go
7 C# 17 Dart
8 Swift 18 Ruby
9 PHP 19 Lua
10 Rust 20 VBA }}}}}}}}}}}} }}}}}}}}}}}}
실행 방식 · 분류 · 언어 목록(분류:프로그래밍 언어 문법) · 언어별 예제 · 틀:프로그래밍 언어 문법 · 틀:난해한 프로그래밍 언어
틀:난해한 프로그래밍 언어어와의 병합 토론이 진행 중입니다.
php
PHP: Hypertext Preprocessor
파일:PHP 로고.svg
<colbgcolor=#787CB4><colcolor=#fff> 최초 개발자 라스무스 러도프
운영 및 개발 The PHP Group
(Zend by Perforce[1])
The PHP Foundation
라이선스 PHP 8.6 이후: BSD 3-Clause
PHP 8.5 이전: PHP License
최초 출시 1995년 6월 8일
최신 버전 8.2.35 (2026년 10월 21일)
8.3.36 (2026년 10월 21일)
8.4.27 (2026년 10월 21일)
8.5.12 (2026년 10월 21일)
[2]
링크 파일:홈페이지 아이콘.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. ORM 들5.3. 디버깅5.4. 테스트 도구5.5. 패키지 관리자5.6. 익스텐션, 익스텐션 관리자5.7. 버전 마이그레이션
6. 문법7. PHP 코딩 표준안8. PHP 비동기와 런타임 환경9. 업데이트
9.1. PHP 5 와 69.2. PHP 79.3. PHP 8
9.3.1. 8.09.3.2. 8.19.3.3. 8.29.3.4. 8.39.3.5. 8.49.3.6. 8.5
9.3.6.1. 8.5.12
9.3.7. 8.6
9.4. PHP 9
10. 기타11. PHP로 작성된 웹사이트/프로그램 목록12. 둘러보기

1. 개요


#!syntax php
<?php
  echo "Hello, world!";
?>

PHP는 대표적인 웹서버사이드 언어이며 범용 프로그래밍 언어다. 전 세계 수많은 웹 서버가 PHP로 작성되어 있다. C-like 문법[3]으로 되어 있고, CGI보다 나으며, 내장된 웹 관련 함수들이 많아 웹 페이지 제작 시 생산성이 높다는 점에서 사용자가 많다. 1995년 라스무스 러돌프가 만들었고, 지금은 PHP 재단에서 후원을 받아 고용한 코어개발자들과 함께 오픈소스 프로젝트로 개발되고 있다.

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

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

2. 특징

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

PHP 의 가장 중요한 특징은 무상태성(Stateless)인데, HTTP 프로토콜과 마찬가지로 상태를 유지하지 않는 성질이다. 사용자가 PHP 웹 서버에 접속(요청)하면, 해당 스크립트를 실행한 뒤 완전히 종료하고, 그다음 새 요청이 들어오면 처음부터 시작하는 방식이다.
간략히 말하면 다음과 같다.이 때문에 PHP에서 싱글톤 패턴을 구현하면, 객체는 한 요청에 의한 작업이 끝날 때까지만 유지된다. 이러한 특성으로 인해 메모리 관리가 쉽고, 사용자(브라우저 요청, cli 입력 등)가 잘못된 입력을 해서 오류가 났을 때 개별적으로 처리하게 되므로 안전하고 스케일 아웃을 곧바로 할 수 있다.

그러나 상태를 유지하지 않기에 기본 배포되는 PHP로는 DB 커넥션 풀을 만들 수가 없어 proxySQL 같은 별도의 프로그램으로 커넥션 풀을 사용한다.[5]

PHP에서 + 기호는 숫자 덧셈과 배열 합치기만 하므로[6] 문자열에 + 를 쓰면 두 값이 숫자 0으로 타입 변환되어 잘못된 결과가 나온다. (예: "Hello, " + "world!";). PHP 8부터는 타입오류가 발생한다.

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

PHP 는 새 버전의 기능을 RFC 문서로 제안받고, RFC에 올라온 사항들을 토의한 뒤 찬반 투표에 부쳐 찬성이 2/3을 넘길 경우 채택한다. 레딧, PHP 메일링 리스트 등에서 토론과 의견교환을 한다. 새 기능 RFC 제안 사항 찬반 투표 진행과 결과를 공개하는 사이트[7]

PHP는 오픈 소스이며 포팅된 곳이 많아 Linux, Windows, macOS, BSD 모두 지원한다. PHP 메뉴얼에는 소스 코드와 컴파일하는 방법을 알려주고 있다. PHP 5.5 버전부터 64비트 버전이 나왔다. 윈도우용은 PHP 홈페이지에서 실행 파일을 받을 수 있게 제공한다. 윈도우용은 동작 방식의 차이 때문에 IIS 및 NGINX에서 돌리는 PHP는 Non-Thread Safe 버전으로, 아파치에서 돌리는 PHP는 Thread-Safe 버전으로 따로 나온다. 맥 OS에는 이미 설치가 되어있는데, 최신 버전을 설치하고 싶으면 맥 OS의 패키지 관리자인 Homebrew(홈브루)를 통해서 설치할 수 있다.

PHP 파일은 <?php ... ?>로 이루어진 코드 실행 영역이 있다. 변수 하나만 출력한다면 <?=$var?> 형태로 줄여 쓸 수 있다. PHP 5.4부터는 short_open_tags 설정값에 상관없이 항상 <?=$var?> 형태로 쓸 수 있게 됐다. 여담인데 이렇게 <? ... ?> 로 줄여 쓰는 방식은 비활성화되어 있다. 사용하려면 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>[8] 태그도 있었는데, JavaScript를 쓰는 것과 혼동할 수 있어서 7 버전에서 삭제됐다.

2.1. 장점

2.2. 단점

2.3. PHP 7.4 이하 버전 단점


#!syntax php
<?php

if(isset($noval)) {
   
} else {
   echo 'noval 은 없다.';
}

// 'noval 은 없다.'

2.4. 다른 웹 개발 기술간 비교

종종 Java 의 템플릿인 JSP와 비교되기도 했었다. PHP 초기에는 템플릿 스크립트처럼 쓰였기 때문이다.
현재는 대다수가 프레임워크 기반으로 개발한다. API 위주로 작성하기도 한다.

일본이나 유럽 그중에서도 독일, 프랑스에서는 PHP를 많이 쓰고 있다.[15]
프랑스에서 개발된 프레임워크인 심포니 프레임워크를 많이 사용한다고 한다.

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

3. 레거시와 현대화

2000년대 초반 국내에서는 네이버도 PHP를 사용했다. 그 당시 PHP는 실행속도가 느린 데다 객체 지향을 제대로 갖추지 않아 협업이 힘들었는데, 그래서 2000년대 중반 Java 나 C# 의 ASP.NET으로 옮겨갔다. PHP에서 객체 지향 문법들이 나아진 것은 2009년 발표된 PHP 5.3부터이다. 페이스북은 이전에는 PHP를 주 언어로 사용하다가 2014년 자사에서 PHP 를 개조해서 hack이라는 언어를 개발해 사용 중이다.[16]

과거 PHP에서는 MVC 패턴[17] 으로 만들 수는 있었지만 어려웠고, 패키지구성이 불가하여 _(언더바) 로 구분하는 이름 규칙을 지정하며 사용했다.[18]
PHP 5.3에 네임스페이스가 도입되면서 패키지를 구성할 수 있게 되었고 객체 지향과 MVC 패턴으로 설계된 프레임워크가 많이 개발됐다. 그러나 오래된 CMS들은[19] 보안에 취약하고 유지보수가 힘들게 작성되어 작업자들도 PHP 전체를 욕하고 떠나는 경우가 많았다. 그 밖에도 소규모 프로젝트에서는 관리가 힘든 경우가 많았다. 예를 들어 제로보드는 SQL 쿼리에 들어갈 변수들에 '준비된 실행문'(Prepared Statement)이라는 안전한 방식을 사용하지 않았는데, 그 결과 SQL 인젝션 공격을 받아 뽐뿌 개인정보 해킹 사건 등이 발생했다. 그누보드5 또한 제로보드와 비슷한 설계이다. 반면 2008년 출시된 XE 는 시작부터 MVC 아키텍처 구조로 제작했으며 SQL 인젝션 문제를 설계를 변경해서 근본적으로 해결했다. 2026년 출시된 그누보드7는 MVC 아키텍처 기반의 라라벨 프레임워크 기반으로 새로 개발되었으며, 드루팔 CMS 는 2015년에 드루팔 8 버전부터 컴포저를 사용하고 개발이 쉬운 패키지 모듈로 개선했다. 워드프레스는 SQL 인젝션을 개선한 함수를 추가한 버전이 나왔으나 그 이전에 개발된 플러그인을 사용하는 경우 보안이 취약하고 위험하다.

3.1. 모던 PHP

PHP 는 오랜 역사 동안 변화와 발전을 거듭했다. PHP 5.3 이후부터 네임스페이스와 객체 지향 프로그래밍(OOP) 패러다임이 본격적으로 도입되고, 여러 기술적 개선, 표준화가 이루어지면서 오늘날 우리가 '모던 PHP' 라고 부르는 형태가 됐다.

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

5. 개발 환경

프로그램을 배포하기 전에 오류를 잡고, 개발 생산성을 높이려면 IDE(통합 개발환경 도구)를 쓰는 것이 좋다. IDE는 터미널, 디버거, 코드 편집기 등 개발에 도움을 주는 여러 기능들이 담겨 있다. 작업 중인 코드의 문제를 추적해 주거나 스타일 수정을 해 주는 패키지와 연동하는 기능들이다.

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

AI 가 통합된 커서 에디터나 아마존의 kiro 등은 vscode 를 수정해서 제작했기에 vscode 와 동일한 플러그인을 설치해서 쓸 수 있다.

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

린터로는 PHP CS Fixer가 인기 있고 정적분석기는 PHPStan 과 Psalm 을 주로 쓴다.

5.1. 웹 프레임워크

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

5.2. ORM 들

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

ORM 구현 라이브러리

5.3. 디버깅

5.4. 테스트 도구

5.5. 패키지 관리자

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

5.6. 익스텐션, 익스텐션 관리자

PHP 에는 VM 의 API 를 이용하여 C나 C++ 등으로 만든 확장프로그램 즉, "익스텐션"이 있다. 주로 성능 향상과 C,C++ 로 작성된 프로그램을 가져올 때 쓴다.

2025년 초까지는 PECL(The PHP Extension Community Library)[32] 사이트에서 관리했다. PECL 은 속도 향상을 위해 C 언어 , C++ 등으로 작성된 PHP 익스텐션들을 배포하는 곳이다. PECL에 패키지를 올리려면 몇 가지 절차가 있는데 해당 익스텐션의 사용법을 php.net 에 문서를 올려야 한다. 가끔 PHP 내장 함수도 아닌데 설명이 있는 것은 이 때문이다. 예전에 PECL에서 인기 있던 익스텐션이 PHP 새 버전에서 통합되는 경우도 있었다. PHP 5.2의 json , PHP 5.5의 opcache 등이 그 예이다.

2025년 하반기부터 PHP 위원회는 PECL 은 지원중단하고 PIE(파이) 라는 프로그램으로 관리하기로 결정했다.[33] PECL 과 달리 PIE 는 composer.json 에 프로젝트가 사용하는 익스텐션을 기록하고 이것을 기준으로 다운받고 관리한다.

익스텐션을 업로드하는 곳도 패키지스트로 통합하기로 했다. 이로써 사용자는 패키지스트에서 PHP 에 관한 모든 프로그램을 검색할 수 있게 됐다

5.7. 버전 마이그레이션

마이그레이션(Migration)은 이주라는 뜻으로 소프트웨어에서는 버전 변경이나 아주 다른 것으로 옮길 때 사용하는 용어다.
PHP 7 이 등장하고 온갖 마이그레이션 툴이 나왔는데 이전 버전의 지원중단 요소(Deprecated), 문법변경, 삭제된 함수 등을 알려주고 고쳐주는 툴이다. 그중에서 Rector 가 살아남아 2025년 현재까지 명맥을 이어오고 있다.
심포니 프레임워크는 공식 업데이트 툴로 rector-symfony[34]를 사용하고 있으며 PHP VM 기여자들도 rector 사용을 권장할 정도로 안정됐다. PHP 5.3 부터 지원하며 룰베이스로 PHP 코드를 최신버전에 맞게 고칠 수있게 도와준다.
https://getrector.com/

6. 문법

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

7. PHP 코딩 표준안

PHP 5.3 이후 PHP 프레임워크를 많이 개발하면서 코딩 표준과 프레임워크들 호환에 관한 규칙이 필요해졌고 PHP 프레임워크 그룹에서 정했다.

8. PHP 비동기와 런타임 환경

런타임 환경이란 프로그램을 실행하는 환경 또는 그 환경을 제공하는 프로그램을 뜻한다. 흔히들 줄여서 "런타임"이라고 부른다.
PHP 는 기본적으로 무상태 프로세스다. 그런데 AmPHP, FrankenPHP, ReactPHP, RoadRunner, Swoole 등의 런타임을 사용하면 상태 프로세스로 쓸 수도 있고 비동기 I/O 가 가능하다. 그래서 DB 커넥션 풀을 만들 수 있고 부트스트래핑 1회로 줄여 성능 향상 폭이 크다.

이런 라이브러리, 런타임들은 별도 설치를 해야 해서 존재를 모르고 pthread 만 가져다 쓰면서 고생하는 경우가 많았다. pthread 익스텐션은 2022년에 제작자가 폐기하고 parallel 이라고 프로세스를 병렬적으로 실행하는 걸 돕는 익스텐션으로 변경했다.

9. 업데이트

PHP 7.0부터는 최신 버전과 2개의 이전 버전만 지원한다. 예를 들어 8.3이 나오면 8.2과 8.1 버전까지 지원 대상에 포함되고, 8.0 지원은 완전히 종료한다. PHP 재단을 설립한 뒤로 보안 업데이트가 1년 연장되어 PHP 8.1부터는 총 4년간 업데이트 기간을 보장받는다.

많이 쓰이는 몇몇 리눅스의 배포판(대표적으로 Red Hat Linux와 Ubuntu)은 PHP의 업데이트가 종료된 이후에도 독자적으로 보안 업데이트를 계속 지원한다. 이런 유명 배포판들은 보통 서버용으로 써서 지원 기간이 길고(LTS로 부르는 장기 지원 버전), 호환성을 위해 해당 메이저 버전 내의 공식 저장소 PHP 버전을 바꾸지 않기 때문에 보안 업데이트를 지원하는 것이다. 그렇지만, 성능과 편의성이 향상된 최신 버전을 쓰는 것이 좋다.

9.1. PHP 5 와 6

9.2. PHP 7

PHP 7의 발표 행보는 상당히 빠르다. 2015년 6월 11일에 알파 1이 나온 이후 한 달 만인 7월 10일에 베타 1이 나왔고, 8월 18일 릴리스 후보안 1(RC1)이 나왔다. 12월 3일에 일반 이용자용(GA)이 나왔다.

PHP 7의 큰 특징은 2배 가까운 속도 향상과 메모리 사용량 감소, 함수의 매개변수 타입, 리턴 타입 지정이 가능하다는 것이다.// 이전 방식
// 삼항 연산자로 작성. ? 앞에 값이 있으면 대입하고 없으면 뒤의 것을 쓴다.
$user = (isset($_GET['user'])) ? $_GET['user'] : '';

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

9.3. PHP 8

9.3.1. 8.0

2020년 11월 26일 출시됐다.//아래는 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가 어떤 역할인지 보는 데 도움된다.
}}}

9.3.2. 8.1

2021년 11월 25일 출시됐다.

9.3.3. 8.2

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

9.3.4. 8.3

2023년 11월 23일 출시됐다.
유효하지 않은 직렬화 문자열을 역직렬화 시도할 때, 로깅하는 메시지가 E_NOTICE에서 E_WARNING 으로 상향하는 등의 변경점이 있다.

9.3.5. 8.4

2024년 11월 21일 출시됐다.

9.3.6. 8.5

2025년 11월 20일 출시됐다.스택트레이스가 출력되게 했다. 그래서 디버깅이 좀 더 나아졌다.C언어로 인터프리터를 만들 때 속도를 개선할 수 있는 Tail Call 방식에 관한 글이 등록되었는데 PHP에도 적용됐다.
덕분에 clang 컴파일 빌드가 gcc 빌드와 성능차이가 거의 나지 않게 되었다.
9.3.6.1. 8.5.12
파일:상세 내용 아이콘.svg   자세한 내용은 PHP2Shell 문서
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[PHP2Shell#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
{{{#!if 문서명 = 문서명 != null ? 문서명 : calleeTitle
의 [[PHP2Shell#|]] 부분을}}}
참고하십시오.
2026년 10월 21일 RCE(원격 코드 실행) 취약점 해결을 위해 PHP 8.5.12 이 긴급 배포되었고, 이에 따라 PHP를 기반으로 하는 게임 및 서비스 전반이 동시에 점검에 들어갔다.

9.3.7. 8.6

9 버전 출시 시기가 1년 더 연기됐다.

변경점
여담으로 TrueAsync 가 논의 중이었다. 기존코드의 변경을 최소화하면서 스코프를 도입하여 공유할 구간과 상태를 공유하지 않는 구간을 나누는 내용인데 하위 호환성 우려와 vm 유지보수관련 문제로 결국 갈라서게 되었다.

9.4. PHP 9

2027년~2028년 사이에 출시 예정인 버전이다. 2018년부터 누적된 PHP 엔진 개선점을 반영하는 버전이라고 한다.이러한 사항들은 vm 내부의 분기점들을 삭제돼서 성능향상이 된다.

모두 PHP 내부 메일링 리스트와 PHP RFC 문서 등지에서 예고, 논의했던 것들이다.[45] 정의하지 않은 변수에 관해서는 기존 코드를 변경할 시간이 필요하므로 지금부터 준비하라고 하고 유명한 라이브러리들은 이미 준비 중이다. PHP CS Fixer 등 린터 프로그램도 있고 2026년 기준으로 경고한지 벌써 7년 차에 접어들어 웬만한 프로그램들은 거의 적응 단계에 들어갔다.

그 밖에 ZTS/NTS 로 나뉘어있는 PHP 빌드 중 ZTS 만 남기고 NTS 는 폐기한다고 한다.

10. 기타

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

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

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

12. 둘러보기

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


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