PHP 已死,只是沒人愿意大聲承認

你不會在 PHP 大會聽到這句話,WordPress 也不會寫進博客。但看完它從“全民最愛”到“行業(yè)笑柄”的曲線,我?guī)缀醮_信:我們正見證這門最具爭議的語言進入謝幕階段。
不會,PHP 明天不會突然消失——龐大的 WordPress 存量會讓它帶管呼吸很多年??蓜e自欺:除了還在維護的 PHP 開發(fā)者外,幾乎所有人都明白它在結(jié)構(gòu)性衰退。
名譽崩塌:從段子主角到負面教材
在程序員社交圈里,PHP 常常等同于“反面示范”。
調(diào)侃爛代碼?舉 PHP。課堂講“如何別寫程序”?拉 PHP 墊背。招聘看到“PHP”,許多面試官條件反射地蹙眉。
這不是“偏見”,而是多年口碑沉淀。過去 25 年,它一次次做出“反直覺”的設計選擇,以至于“PHP 風格”被當成“錯誤語言設計的代名詞”。
幾件“名場面”:
mysql_real_escape_string()(因為mysql_escape_string()還不夠“real”?)- 命名體系七零八落(
strlen/str_split/strpos) - 參量順序忽左忽右(有時 needle-haystack,有時 haystack-needle)
- Magic Quotes(默認開啟,污染一片)
- Register Globals(默認開啟的安全災難)
當“歷史陳列柜”里擺滿“壞決定”,問題就不是“成長痛”,而是底層世界觀。
WordPress 的“輸血管”
“可 PHP 托舉了 43% 的網(wǎng)站!”有人會說,“看 WordPress!看 Facebook!看 Wikipedia!”
不太好聽的真相:WordPress 不是 PHP 的“功勛章”,而是它的氧氣瓶。
43% 的“市占”來自于 WordPress,而不是因為 PHP 多先進,而是因為:
- 搶先布局 + 共享主機一把梭
- 非技術(shù)用戶需要一個“能用就行”的系統(tǒng)
- 門檻幾乎為 0,成本幾乎為 0
這更像是歷史紅利 + 供應側(cè)的規(guī)?;┙o,而非語言本身的技術(shù)勝利。
與此同時,許多從 PHP 起家的“嚴肅業(yè)務”最終都脫鉤:
- Facebook 做了 Hack,核心長期以 C++ / Rust 為主
- Slack 把后端換到 Java / Go
- Etsy 把關(guān)鍵系統(tǒng)遷向 JVM
- Medium 轉(zhuǎn)向 Node.js
當你的最佳“案例”最終都選擇離家出走,那叫“故事講得好”,不叫“生態(tài)向上”。
共享主機的“歷史人質(zhì)”
PHP 的“無處不在”,更像是被共享主機架起來的既定事實。
2000 年代初,廉價主機為什么選它?
- 免費,無許可費
- 和 Apache 無腦整合
- 配置簡單,上手極快
- 對“能展示網(wǎng)頁就行”的站點足夠
二十多年后,這種默認配置依舊在慣性運行:“PHP+MySQL”仍是很多主機的默認棧。這形成了一種**“假繁榮”:看似份額巨大,實則是初學者與小微商戶**的路徑依賴。
但看看真正的增量創(chuàng)新在哪里:
- 創(chuàng)業(yè)公司:Node.js / Python / Go
- 企業(yè)級:Java / C#
- 高性能:Rust / C++
- 現(xiàn)代前后端:JS 前端框架 + API 后端
PHP 的“勢力范圍”越來越集中在遺留系統(tǒng)與價格敏感的長尾——而這些都不塑造語言的未來。
框架墳場與“看似繁榮”
PHP 框架生態(tài)留下了一地“墓碑”:
已涼:
- CodeIgniter(形式上活著,靈魂已飛)
- CakePHP(主角時代停在 2012)
- Zend Framework(改名改到自我消耗)
- Phalcon(C 擴展的調(diào)試噩夢)
- FuelPHP(油盡燈枯)
半尸變:
- Symfony(強大也繁復,學習曲線直上天花板)
- Laravel(語法優(yōu)雅但遮不住語言基建的坑)
- Yii(“還在”,“但也就那樣”)
大家都承諾“讓 PHP 現(xiàn)代化/企業(yè)級”,可框架蓋不住語言的地基。 Laravel 的“成功學”尤其說明問題:它基本是把 Rails(2005 年) 的理念移植過來。“現(xiàn)代”如果等于復刻二十年前,那叫跟隨,不叫引領(lǐng)。
類型系統(tǒng):晚學走路
PHP 和類型的關(guān)系,像一個三十歲才學走路的人。
二十年里,它基本沒有類型系統(tǒng):變量可以到處變形,甚至一行里換著玩:
// 經(jīng)典 PHP:猜猜會返回啥?
function add($a, $b) {
return $a + $b;
}
add("5", 3); // 8(字符串被轉(zhuǎn)成數(shù)字)
add("hello", 3); // 3("hello" -> 0)
add([1,2], [3,4]); // 數(shù)組轉(zhuǎn)字符串告警/錯誤
add(null, 5); // 5(null -> 0)PHP 7 開始類型提示,PHP 8 逐漸收緊。這固然是進步,但更多是承認過去的混沌。 而同一時代的新語言,從第一天就把類型打滿格。當你的“改良”是在追 70 年代的設計共識,那不是進步,是補課。
安全“祖?zhèn)麟[患”
“默認不安全,需要手動加固”幾乎是 PHP 的標簽。
- 默認容易埋下 SQL 注入 / XSS
- 文件上傳漏洞層出不窮
- 會話管理讓安全工程師頭大
eval()/exec()天然就是靶子
現(xiàn)代框架會疊加安全中間層,但本質(zhì)是在流沙上蓋金庫。 其他語言從 PHP 的教訓起步,把安全寫進語言模型;當你的安全策略是“希望框架救命”,你擁有的不是安全,而是高危資產(chǎn)。
性能:從“慘不忍睹”到“勉強能看”
“PHP 8 很快!”支持者會掏出基準數(shù)據(jù),證明它現(xiàn)在“只慢 10 倍,不再慢 50 倍”。
現(xiàn)實更骨感:
- PHP“Hello World”HTTP:~ 1,000 req/s
- Go:~ 100,000 req/s
- Rust:~ 200,000+ req/s
- Node.js:~ 10,000 req/s
所謂“優(yōu)化”,更多是把“尷尬”修成了“尚可”。核心結(jié)構(gòu)沒變:每個請求都重新構(gòu)建應用上下文;而現(xiàn)代后端保持常駐進程、復用資源、全鏈路優(yōu)化。 1995 年的小網(wǎng)站,這樣干無傷大雅;2025 年的高并發(fā)世界,這叫架構(gòu)失職。
人才外流:沒人愿意“以 PHP 為終點”
新人不再主動選擇 PHP:
- GitHub 語言榜長期走低
- Stack Overflow 調(diào)研里滿意度拉胯
- 訓練營/Bootcamp 主打 JS / Python / React,很少教 PHP
- 高校更愿把 PHP 當作歷史橋段
仍在使用 PHP 的人,大致兩類:
- 遺留守門人:維護 WordPress 與老系統(tǒng)
- 堅定派:相信 Laravel 能抵消語言的“原罪”
而“人才活水”流向更有前景的棧:
- JavaScript:就業(yè)面廣
- Python:AI / 數(shù)據(jù)科學
- Go:后端主力
- Rust:系統(tǒng)級
當新鮮血液不再涌入,社區(qū)就不是生態(tài),而是互助會。
現(xiàn)代 Web 與移動浪潮中“缺位”
PHP 基本錯過了每一個關(guān)鍵范式轉(zhuǎn)移:
- SPA 崛起:JS 生態(tài)接管
- 移動端 API:Go / Node / Python 當家
- 實時 & 推送:WebSocket + 現(xiàn)代語言贏面大
- 微服務:PHP 的傳統(tǒng)模型很別扭
- 云原生:PHP 鏡像臃腫
- 邊緣計算:主流邊緣運行時不玩它
PHP 擅長的依舊是:在傳統(tǒng)服務器上拼接 HTML。在一個API + 前端應用 + 邊緣邏輯的時代,這相當于成為了最會發(fā)電報的人。
企業(yè)級的“難堪”
嚴肅企業(yè)在新項目上幾乎不會選擇 PHP:
- 性能:Java / C# / Go
- 可靠性:成熟企業(yè)語言
- 安全:盡量避開“隱患血統(tǒng)”
- 可擴展:適配現(xiàn)代架構(gòu)
- 人才:高校與社群供給充足
PHP 在企業(yè)的存在,多半是:
- 市場部托管的 WordPress
- 重寫成本過高的老系統(tǒng)
- 小生意的展示站與表單系統(tǒng)
當最大的“企業(yè)戰(zhàn)報”是“還沒來得及遷移”,這不叫企業(yè)級,這叫企業(yè)忍耐。
Composer 的“后知后覺”
包管理是現(xiàn)代生態(tài)的命門,Composer 卻來得太晚。副作用顯而易見:
- 依賴解析陰晴不定
- 版本沖突令人心力交瘁
- 安全審計工具鏈欠火候
- autoload 在生產(chǎn)上偶發(fā)“離奇崩壞”
vendor膨脹超過應用本體
工具不差在“不會做工具”,而差在語言基建讓好工具舉步維艱。
Async/Await:尷尬的補課姿勢
當 Node.js / Python / C# 把異步模型打磨成熟,PHP 交出的答卷是 ReactPHP:讓 PHP 假裝像 Node.js。
- 復雜度更高
- 性能更差
- 受眾更窄
- 出錯更多
現(xiàn)代 Web 需要大規(guī)模并發(fā)連接的優(yōu)雅處理;PHP 的常見回答是:多進程 + 祈禱。
開發(fā)體驗:像坐上時光機
2025 年寫 PHP,常有一種 2005 年味道:
- 報錯信息模糊
- 調(diào)試靠
var_dump()+ 心誠則靈 - IDE 支持雖有進步,仍不如同代
- 測試存在(PHPUnit),但存在感不強
- 部署要么 FTP 祖?zhèn)鞣?/span>,要么 容器上重刀,中間地帶稀薄
- 觀測與追蹤強依賴第三方拼裝
而其他主流語言提供的則是:友好錯誤、原生調(diào)試、成熟 IDE、第一公民的測試工具、簡化的發(fā)布流程、可觀測性默認在線。
結(jié)論:它曾“普惠”,也曾“拖累”
PHP 的成功更多是時代紅利:Web 暴漲年代 + 免費 + 門檻低。 世界變了:工程文化成熟,語言設計拔高,基礎(chǔ)設施升級,正確的做法成為共識。
PHP 的退潮不是瞬間崩塌,而是代際更替:
- 新人不選
- 在任的遷出
- 新項目避開
- 學界把它當“歷史梗概”
蛛絲馬跡隨處可見:
- WordPress 正在把更多能力遷向 JS 側(cè)(如 Gutenberg)
- 頭部應用陸續(xù)完成技術(shù)更代
- 主機商提供 Node/Python 做默認選項
- 開發(fā)者調(diào)研里興趣與滿意度走低
- 職位描述里“PHP 維護”多于“PHP 開發(fā)”
它不會一夜蒸發(fā):WordPress 和海量遺留會長久存在。但 PHP 正在變成你被迫繼承的語言,而非你主動選擇的語言。
未來 Web 的地基,正在由吸取了 PHP 教訓的語言來澆筑:
- 類型安全,一次性消滅大片 bug
- 高性能運行時,服務現(xiàn)代負載
- 友好工具鏈,輔助而不遮蔽
- 安全模型內(nèi)建,面向敵對互聯(lián)網(wǎng)
- 可擴架構(gòu),適配云原生與邊緣
PHP 會像 COBOL 一樣長期存在——用于維護,不用于開辟。
當歷史給 PHP 收個尾,大概會寫下這樣一句話:
“它曾讓萬眾能寫網(wǎng)站;后來,它也讓網(wǎng)站難以上進?!?/span>
你還在做 PHP 嗎?你的遷移策略是什么?討論不會停止,但 PHP 在那場討論里的位置,已經(jīng)越來越清晰。


























