現今我們所知的 PHP 其實是 PHP/FI 的後繼者。PHP 最初的版本是由 Rasmus Lerdorf 於 1994 年創造,它是一組以 C 語言編寫的簡單通用閘道器介面 (CGI) 程式。最初用於追蹤他的線上履歷的訪問次數,他將這套腳本命名為「個人首頁工具 (Personal Home Page Tools)」,更常被稱為「PHP 工具」。隨著時間推移,人們需要更多功能,Rasmus 於是重寫了 PHP 工具,產生了一個更龐大、更豐富的版本。這個新模型能夠與資料庫互動,並提供了一個框架,讓使用者可以開發簡單的動態網頁應用程式,例如留言板。1995 年 6 月,Rasmus » 公開發布 了 PHP 工具的原始碼,允許開發者自由使用。這也允許,甚至鼓勵使用者提供程式碼錯誤的修復,並對其進行改進。
同年 9 月,Rasmus 擴展了 PHP,並在短時間內捨棄了 PHP 這個名稱。他將這些工具稱為 FI(「表單直譯器 (Forms Interpreter)」的縮寫),這個新的版本包含了我們今天所知的 PHP 的一些基本功能。它具有類似 Perl 的變數、表單變數的自動直譯,以及嵌入 HTML 的語法。語法本身類似於 Perl,但更受限、更簡單,而且有些不一致。事實上,為了將程式碼嵌入 HTML 檔案中,開發者必須使用 HTML 註解。雖然這種方法並未完全受到好評,但 FI 作為 CGI 工具仍持續發展並被接受——但仍未被視為一種程式語言。然而,情況在接下來的一個月開始改變;1995 年 10 月,Rasmus 發布了程式碼的完整重寫版本。恢復了 PHP 的名稱,它現在(短暫地)被稱為「個人首頁建構工具包 (Personal Home Page Construction Kit)」,並且是第一個擁有當時被認為是先進腳本介面的版本。該語言的結構被刻意設計成類似 C 語言,使其易於被熟悉 C、Perl 和類似語言的開發者採用。到目前為止,它僅限於 UNIX 和 POSIX 相容的系統,但 Windows NT 版本的可能性正在被探索。
程式碼再次進行了全面改造,1996 年 4 月,Rasmus 結合了過去版本的命名,推出了 PHP/FI。這個第二代版本開始真正將 PHP 從一套工具發展成一種獨立的程式語言。它包含了對 DBM、mSQL 和 Postgres95 資料庫的內建支援、Cookie、使用者自訂函式支援等等。同年 6 月,PHP/FI 被賦予了 2.0 版本的狀態。然而,一個有趣的事實是,PHP 2.0 只有一個完整的版本。當它在 1997 年 11 月最終脫離測試版狀態時,底層的解析引擎已經被完全重寫。
雖然它的開發週期很短,但在當時仍處於發展初期的網路開發世界中,它持續享有越來越高的人氣。在 1997 年和 1998 年,PHP/FI 在全球擁有數千名忠實用戶。根據 1998 年 5 月 Netcraft 的調查顯示,將近 60,000 個網域的標頭中包含「PHP」,這表示這些主機伺服器確實安裝了 PHP/FI。這個數字大約相當於當時網際網路上所有網域的 1%。儘管這些數字令人印象深刻,但 PHP/FI 的發展注定受限;雖然有一些次要的貢獻者,但它主要還是由一個人開發。
範例 #1 PHP/FI 程式碼範例
<!--include /text/header.html--> <!--getenv HTTP_USER_AGENT--> <!--ifsubstr $exec_result Mozilla--> Hey, you are using Netscape!<p> <!--endif--> <!--sql database select * from table where user='$username'--> <!--ifless $numentries 1--> Sorry, that record does not exist<p> <!--endif exit--> Welcome <!--$user-->!<p> You have <!--$index:0--> credits left in your account.<p> <!--include /text/footer.html-->
PHP 3.0 是第一個與現今 PHP 非常相似的版本。來自以色列特拉維夫的 Andi Gutmans 和 Zeev Suraski 認為 PHP/FI 2.0 效率低下,並且缺乏他們為大學專案開發電子商務應用程式所需的功能,因此在 1997 年開始了對底層解析器的又一次完整重寫。他們在線上與 Rasmus 聯繫,討論了當前版本的各個方面以及他們重新開發 PHP 的想法。為了改進引擎並開始建立 PHP/FI 現有的用戶群,Andi、Rasmus 和 Zeev 決定合作開發一種新的、獨立的程式語言。這個全新的語言以一個新的名稱發布,去除了 PHP/FI 2.0 名稱中隱含的個人使用限制。它被重新命名為「PHP」,其含義成為一個遞迴縮寫 — PHP: Hypertext Preprocessor (超文字預處理器)。
PHP 3.0 最大的優勢之一是其強大的擴展功能。除了為終端用戶提供多個資料庫、協定和 API 的成熟介面外,擴展語言本身的便捷性也吸引了數十名開發人員提交了各種模組。可以說,這是 PHP 3.0 取得巨大成功的關鍵。PHP 3.0 引入的其他主要功能包括物件導向程式設計支援以及更強大、更一致的語言語法。
1998 年 6 月,隨著來自世界各地許多新開發人員的加入,新的 PHP 開發團隊宣布 PHP 3.0 為 PHP/FI 2.0 的正式繼任者。PHP/FI 2.0 的積極開發,自前一年 11 月以來就幾乎停止,現在正式結束。經過大約九個月的公開測試,當 PHP 3.0 正式發布時,它已經安裝在全球超過 70,000 個網域上,並且不再局限於 POSIX 相容的作業系統。在回報安裝 PHP 的網域中,有一小部分是在運行 Windows 95、98 和 NT 以及 Macintosh 的伺服器上。在高峰期,網際網路上約有 10% 的網路伺服器安裝了 PHP 3.0。
在 1998 年冬季,PHP 3.0 正式發布後不久,Andi Gutmans 和 Zeev Suraski 就開始著手重寫 PHP 的核心。設計目標是提高複雜應用程式的效能,並改善 PHP 程式碼庫的模組化。PHP 3.0 的新功能以及對各種第三方資料庫和 API 的支援使這些應用程式成為可能,但 PHP 3.0 並非設計用於有效地處理此類複雜應用程式。
新的引擎被稱為「Zend Engine」(由他們的名字 Zeev 和 Andi 組成),成功地達到了這些設計目標,並於 1999 年年中首次推出。基於此引擎的 PHP 4.0,加上一系列額外的全新功能,於 2000 年 5 月正式發布,距離其前身近兩年。除了此版本大幅提升的效能之外,PHP 4.0 還包含其他主要功能,例如支援更多網路伺服器、HTTP 工作階段、輸出緩衝、更安全的使用者輸入處理方式以及一些新的語言結構。
PHP 5 於 2004 年 7 月正式發佈,經歷了漫長的開發和多次預發佈版本。它主要由其核心 Zend Engine 2.0
驅動,採用了新的物件模型和其他數十項新功能。
PHP 的開發團隊包含數十名開發人員,還有數十名人員從事與 PHP 相關的支援項目,例如 PEAR、PECL 和文件,以及遍佈全球六大洲一百多台獨立網路伺服器的底層網路基礎設施。雖然僅根據過去幾年的統計數據進行估計,但可以安全地推測,PHP 現在已安裝在全球數千萬甚至數億個網域上。
PHP 6 的計畫是在引擎和語言中提供對 Unicode 的深度支援。這項工作後來被放棄,但原本針對 PHP 6 的其他功能則被納入 PHP 5.3(命名空間)和 PHP 5.4(特性、「簡短」陣列語法)。