## PHP (超文本預處理器)
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。
語法吸收了C語言、Java和Perl的特點,利于學習,使用廣泛,主要適用于Web開發領域。
PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;
PHP還可以執行編譯后代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
### 發展
PHP原始為`Personal Home Page`的縮寫,已經正式更名為`PHP: Hypertext Preprocessor`。
> 注意不是“Hypertext Preprocessor”的縮寫,這種將名稱放到定義中的寫法被稱作遞歸縮寫。
PHP于1994年由Rasmus Lerdorf創建,剛剛開始是Rasmus Lerdorf為了要維護個人網頁而制作的一個簡單的用Perl語言編寫的程序。這些工具程序用來顯示 Rasmus Lerdorf 的個人履歷,以及統計網頁流量。后來又用C語言重新編寫,包括可以訪問數據庫。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和數據庫連接,產生簡單的動態網頁程序。
在1995年以Personal Home Page Tools (PHP Tools) 開始對外發表第一個版本,Lerdorf寫了一些介紹此程序的文檔。并且發布了PHP1.0!在這的版本中,提供了訪客留言本、訪客計數器等簡單的功能。以后越來越多的網站使用了PHP,并且強烈要求增加一些特性。比如循環語句和數組變量等等;在新的成員加入開發行列之后,Rasmus Lerdorf 在1995年6月8日將 PHP/FI 公開發布,希望可以透過社群來加速程序開發與尋找錯誤。這個發布的版本命名為 PHP 2,已經有 PHP 的一些雛型,像是類似 Perl的變量命名方式、表單處理功能、以及嵌入到 HTML 中執行的能力。程序語法上也類似 Perl,有較多的限制,不過更簡單、更有彈性。PHP/FI加入了對MySQL的支持,從此建立了PHP在動態網頁開發上的地位。到了1996年底,有15000個網站使用 PHP/FI。
ISAPI篩選器
在1997年,任職于 Technion IIT公司的兩個以色列程序設計師:Zeev Suraski 和 Andi Gutmans,重寫了 PHP 的剖析器,成為 PHP 3 的基礎。而 PHP 也在這個時候改稱為PHP:Hypertext Preprocessor。經過幾個月測試,開發團隊在1997年11月發布了 PHP/FI 2。隨后就開始 PHP 3 的開放測試,最后在1998年6月正式發布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 發布后開始改寫PHP 的核心,這個在1999年發布的剖析器稱為 Zend Engine,他們也在以色列的 Ramat Gan 成立了 Zend Technologies 來管理 PHP 的開發。
在2000年5月22日,以Zend Engine 1.0為基礎的PHP 4正式發布,2004年7月13日則發布了PHP 5,PHP 5則使用了第二代的Zend Engine。PHP包含了許多新特色,像是強化的面向對象功能、引入PDO(PHP Data Objects,一個存取數據庫的延伸函數庫)、以及許多效能上的增強。PHP 4已經不會繼續
PHP
更新,以鼓勵用戶轉移到PHP 5。
2008年PHP 5成為了PHP唯一的有在開發的PHP版本。將來的PHP 5.3將會加入Late static binding和一些其他的功能強化。PHP 6 的開發也正在進行中,主要的改進有移除register_globals、magic quotes 和 Safe mode的功能。
PHP最新穩定版本:5.4.30(2013.6.26)
PHP最新發布的正式版本:5.5.14(2014.6.24)
PHP最新測試版本:5.6.0 RC2(2014.6.03)
2013年6月20日,PHP開發團隊自豪地宣布推出PHP 5.5.0。此版本包含了大量的新功能和bug修復。需要開發者特別注意的一點是不再支持 Windows XP 和 2003 系統。
2014年10月16日,PHP開發團隊宣布PHP 5.6.2可用。四安全相關的錯誤是固定在這個版本,包括修復cve-2014-3668,cve-2014-3669和cve-2014-3670。所有的PHP 5.6鼓勵用戶升級到這個版本。
* * * * *
### 開發工具
集成開發環境是一種集成了軟件開發過程中所需主要工具的集成開發環境,其功能包括但不僅限于代碼高亮、代碼補全、調試、構建、版本控制等。一些常見的PHP IDEs如下:
Zend Studio:商業版,Zend官方出品,基于eclipse
Eclipse with PDT:免費
Coda:商業版,針對Mac用戶
NetBeans:免費,功能強大
PHP Storm:商業版
Aptana Studio:免費
PhpEd:商業版
Komodo IDE/Edit:IDE為商業版,Edit可免費使用
Adobe Dreamweaver:商業版
除去集成開發環境,具備代碼高亮功能的常見文本編輯器因其輕巧靈活也常被選作開發工具,例如:Notepad++、Editplus、SublimeText、Everedit(國人開發)等等。
* * * * *
### 特性
PHP的特性包括:
1. PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。
2. PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,
PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。
3. PHP支持幾乎所有流行的數據庫以及操作系統。
4. 最重要的是PHP可以用C、C++進行程序的擴展!
* * * * *
### 優勢
開放源代碼
所有的PHP源代碼事實上都可以得到。
免費性
和其它技術相比,PHP本身免費且是開源代碼。
快捷性
程序開發快,運行快,技術本身學習快。嵌入于HTML:因為PHP可以被嵌入于HTML語言,它相對于其他語言。編輯簡單,實用性強,更適合初學者。
跨平臺性強
由于PHP是運行在服務器端的腳本,可以運行在UNIX、LINUX、WINDOWS、Mac OS、Android等平臺
效率高
PHP消耗相當少的系統資源。
圖像處理
用PHP動態創建圖像,PHP圖像處理默認使用GD2。且也可以配置為使用image magick進行圖像處理。
面向對象
在php4,php5 中,面向對象方面都有了很大的改進,php完全可以用來開發大型商業程序。
專業專注
PHP支持腳本語言為主,同為類C語言。
* * * * *
### 技術應用
偽靜態
靜態頁面生成
數據庫緩存
過程緩存
div+cssw3c標準
大負荷
分布式
flex
桌面程序應用(不擅長)
支持MVC模型
Smarty模版引擎
### 版本區別
[2] PHP版本VC6與VC9、Thread Safe與None-Thread Safe等的區別
PHP的大版本主要分三支:PHP4/PHP5/PHP6
其中,PHP4由于太古老、對QQ支持不力已基本被淘汰,請無視PHP4。
PHP6由于基本沒有生產線上的應用,還基本只是一款概念產品,很多功能已在PHP5.3.3上實現,所以也不詳述,請無視PHP6。
PHP5的版本主要分四支:PHP5.2之前的版本、PHP5.2.X、PHP5.3和日前發布的PHP5.4。
選擇版本
PHP5.2之前的版本不值得考慮,因為某些功能缺陷或者BUG。PHP5.4還處于Beta試用的版本號,非穩定版本,請無視PHP5.4。
主流PHP程序對PHP5.2.X的兼容性最好,而每次版本號的升級帶來的都是安全性和穩定性的改善,所以宜挑選最新的版本。目前PHP5.2系列最新的是PHP5.2.17。
而如果產品是自己開發自己使用,PHP5.3在某些方面更具優勢,在穩定性上更勝一籌,增加了很多PHP5.2所不具有的功能,比如內置php-fpm、更完善的垃圾回收算法、命名空間的引入、sqlite3的支持等等,是部署項目值得考慮的版本,強烈推薦PHP5.3.3。
除了版本號的不同,同一版本號的PHP版本也有區別,并且在選擇PHP擴展的時候需要注意。
install版:可執行的MSI格式安裝包。
ZIP版:解壓即可用。和install版無區別。建議選擇ZIP版。
DEBUG版:最終用戶無需關心。
VC6與VC9
如果你在apache1或者apache2下使用PHP,你應該選擇VC6的版本
如果你在IIS下使用PHP應該選擇VC9的版本,VC6的版本使用visual studio6編譯,VC9使用Visual Studio 2008編譯,并且改進了性能和穩定性。VC9版本的PHP需要你安裝Microsoft 2008 C++ Runtime。不要在apache下使用VC9的版本。
TS和NTS
TS指Thread Safety,即線程安全,一般在IIS以ISAPI方式加載的時候選擇這個版本。
NTS即None-Thread Safe,一般以fast cgi方式運行的時候選擇這個版本,具有更好的性能。
從2000年10月20日發布的第一個Windows版的PHP3.0.17開始的都是線程安全的版本,這是由于與Linux/Unix系統是采用多進程的工作方式不同的是Windows系統是采用多線程的工作方式。如果在IIS下以CGI方式運行PHP會非常慢,這是由于CGI模式是建立在多進程的基礎之上的,而非多線程。一般我們會把PHP配置成以ISAPI的方式來運行,ISAPI是多線程的方式,這樣就快多了。但存在一個問題,很多常用的PHP擴展是以Linux/Unix的多進程思想來開發的,這些擴展在ISAPI的方式運行時就會出錯搞垮IIS。因此在IIS下CGI模式才是 PHP運行的最安全方式,但CGI模式對于每個HTTP請求都需要重新加載和卸載整個PHP環境,其消耗是巨大的。
為了兼顧IIS下PHP的效率和安全,微軟給出了FastCGI的解決方案。FastCGI可以讓PHP的進程重復利用而不是每一個新的請求就重開一個進程。同時FastCGI也可以允許幾個進程同時執行。這樣既解決了CGI進程模式消耗太大的問題,又利用上了CGI進程模式不存在線程安全問題的優勢。
因此,如果是使用ISAPI的方式來運行PHP就必須用Thread Safe(線程安全)的版本;而用FastCGI模式運行PHP的話就沒有必要用線程安全檢查了,用None Thread Safe(NTS,非線程安全)的版本能夠更好的提高效率。
查看版本
一個很簡單的辦法就是phpinfo();
Thread Safety disabled是NTS,enabled是TS
Configure Command看到VC98字樣的是VC6,Compiler標明 MSVC9 (Visual C++ 2008) 的是VC9
在WIN7下:IIS7+NTS+FastCGI+vc9 是最佳搭檔或者apache+fastcgi+nts+vc6。
在WINXP下:Apache+TS+Apache module +vc6最合適的搭檔。
### PHP3
PHP3跟Apache服務器的緊密結合的特性;加上它可以不斷的更新及加入新的功能,而且幾乎支持所有主流與非主流數據庫。再以它能高速的執行效率,使得PHP在1999年中的使用站點已經超過了150000。加上它的源代碼完全公開,在 Open Source意識抬頭的今天,它更是這方面的中流砥柱。不斷地有新的函數庫加入,以及不停地更新的活力。使得PHP無論在UNIX、LINUX或是Windows的平臺上都可以有更多新的功能。它提供豐富的函數,使得在程序設計方面有著更好的支持。
### PHP4
簡介
PHP4.0整個腳本程序的核心大幅更動,讓程序的執行速度,滿足更快的要求。在最佳化之后的效率,已較傳統CGI或者ASP等程序有更好的表現。而且還有更強的新功能、更豐富的函數庫。無論您接不接受,PHP 都將在 Web CGI 的領域上,掀起巔覆性的革命。對于一位專業的Web Master 而言,它將也是必修課程之一。
PHP 4.0是更有效的,更可靠的動態Web頁開發工具,在大多數情況運行比 PHP 3.0要快,其腳本描述更強大并且更復雜,最顯著的特征是速率比的增加。PHP4.0這些優異的性能是PHP腳本引擎重新設計產生的結果:引擎由AndiGutmans和Zeev Suraski從底層全面重寫。PHP4.0 腳本引擎 ——Zend引擎,使用了一種更有效的編譯——執行方式,而不是PHP 3.0 采用的執行 ——當解析時模型。
優越性
PHP4在3.0版的基礎上增加或增強了許多有用的特征,主要如下:
(1)別名:在PHP4中,可以利用引用為變量賦值,這給編程帶來了很大的靈活性。
(2)擴充了API模塊:PHP 4.0 為擴展的 API 模塊的提供了擴展PHP接口模塊,它比舊的 API 版本顯著地快。PHP 模塊已有的及最常用的接口多數被轉換到使用這個擴展的接口。
(3)自動資源釋放:PHP4增加了引用計數功能,這種新技術的引入使PHP4具有了自動內存管理功能,減輕了開發人員的負擔。
(4)布爾類型:PHP 4.0 支持布爾類型。
(5)進程生成:在 UNIX 環境下的 PHP 4.0 提供了一個很智能和通用的生成進程,使用了一種名為基于automake/libtool的系統生成技術。
(6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 僅用于Windows 環境 ) 可以無縫地存取和訪問 COM 對象。
(7)與PHP 3.0 兼容性很好:PHP 4.0 是與 PHP 3.0 代碼向后兼容性接近100%。由于 PHP 4 的改進的體系結構,兩者有一些細微的差別,但是大多數人將可能永遠不可能遇上這種情況。
(8)配置:PHP4重新設計和增強了PHP.ini文件,這使得用PHP.ini來配置PHP顯得極為容易,這個文件可以在運行時被Apache(unix系統)或由Windows 注冊(Windows 環境)。
(9)加密支持:PHP4實現了完整的加密,這些加密功能是一個完整的mycrypt庫,并且 PHP 4.0 支持哈希函數。Blowfish,TripleDES,MD5,并且SHA1 也是可使用的一些加密算法。
(10)類型檢查:PHP 4.0 支持同一操作符用于評類型檢查:===(3 等號運算符,恒等計算符),為在兩個值和其類型之間作檢查。例如,'3' ===3 將視為假 ( 類型是不同的),而 3 ==3 ( 相等判斷,不比較類型 ) 將視為真。
(11)FTP 支持:PHP 4.0 支持 FTP。通常,你會為通過一個調制解調器連接下載一個大文件提供一個接口。然而,如果你確實有需要,可以使用PHP。
(12)PHP4新增函數或功能增強函數:PHP 4.0 新增了許多函數,同時也將許多現有的函數功能進行了增強,以下是一些例子。array_count_values() eval() foreach() include() ob_end_clean() ob_end_flush() ob_get_contents() ob_start()strip_tags() unset()。
(13)here打印:PHP 4.0 的Here打印是與Perl類似的,盡管完全不相同。Here是打印大容量文章的一個有用的方法,例如在HTML文件中,不會漏掉任何一個字符,例如目錄標記。
(14)HTTP Session fallback 系統:為 HTTP Session管理的一個 fallback 系統在 PHP 4.0被實現。缺省情況下,Session標識符由cookies存儲。如果沒有cookies支持或一項cookies任務失敗,Session標識符自動被創建并在 URL 的查詢字符串中被攜帶。
(15)ISAPI 支持:PHP 4.0 能作為一個個性化的 ISAPI 模塊作為IIS插件。這比 PHP 3.0 更有效,它作為一個外部的程序來運行。
(16)內存:PHP 4.0 能更有效的使用內存,導致較少的內存占用消耗,這主要歸功于引用計數技術的實現。⒄其他類成員函數:在 PHP 4.0 你能在成員函數本身的作用域或全局范圍內調用其他類的成員函數。例如,你能用一個子函數覆蓋父函數,并在子函數中調用父函數。
(17)多維數組:在 PHP 4.0 ,利用GET,POST,Cookies的進行的數據傳輸支持多維數組。
(18)個性化的 HTTPSession支持:HTTP Session處理,包括 fallback系統管理,在 PHP 4.0被它的新庫函數實現。在版本 3.0 中處理Session要求使用 PHPLIB 和第三方的庫函數,它比把Session直接地由 PHP 支持慢了許多。
(19)個性化的 Java 支持:PHP 4.0 支持和java的交互。這種個性化的Java 支持為PHP 在 Java 對象上創建和使用方法提供一個簡單并且有效的工具。
(20)對象和數嵌套組:PHP 4.0 實現了功能更加強大的對象,移去了 PHP 3.0存在的種種句法限制。對象能在數組以內被嵌套并且反過來也如此,可以根據你的需要實現嵌套。
(21)面向對象的編程:PHP 4.0 為面向對象的編程和構造類及對象提供擴展的功能和新特征。PHP4實現了對象重載,引用技術等新技術。
(22)對象重載支持:對象重載語法允許第三方的基于面向對象的類庫使用 PHP4 的面向對象的特征存取他們自身的功能。使用這個特征的一個 COM 模塊已經被實現了。
(23)輸出緩沖支持:PHP 提供了一個輸出緩沖函數集合。輸出緩沖支持允許你寫包裹函數功能壓縮緩沖區。在 PHP4 的輸出緩沖支持允許 HTML 頭信息存放,無論 HTML的正文是否輸出。頭信息( (header(),content type,and cookies ) 不采用緩沖。
(24)增加了PCRE庫:PHP 4.0 包括一個 Perl 兼容的正則表達式(PCRE ) 庫,和正常regex庫一起與 PHP 綁定。split 和replace PCRE 功能被支持。PCRE 和 Perl 正規表達式之間有一些細微差別。
(25)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新設計,使用的 PHP 的配置PHP.ini是更容易并且更有效的。全部文件能被Apache 在運行時間操作 ( 在 Apache環境 下 ) 或由 Windows 注冊表 ( 在 Windows 下面 )。被加入PHP.ini文件的配置指令自動地在所有相關的模塊中被支持。
(26)引用計數:PHP 4.0 為系統中的每個數值提供了引用計數,包括資源。一旦一個資源不再被任何變量引用,它自動地被釋放以節省內存資源。利用這個特征的最明顯的例子一個內置SQL查詢的循環語句。在PHP 3.0中 ,每次遞歸另外的 SQL 結果集合重復申請內存,直到腳本執行完畢,這些結果集合占用的內存才被釋放。
(27)支持引用:通過引用可以改變一個變量的值。
(28)函數的運行時綁定:PHP 4.0 的運行時間綁定功能允許你在他們被聲明以前調用,無論聲明是否在代碼以后或是在運行時間。
(29)類的運行時信息:PHP 4.0 支持在運行時刻存取下列類信息:一個對象的類名,一個對象的父類的類名字,以及對象函數所在的名字。
(30)服務器抽象層:為支持Web服務器提供了增強型 SAPI ( 服務器 API ) 接口,是 PHP 4.0 不可分的一部分。這個服務器抽象層,提供了通用的WEB服務器接口支持,支持多線程WEB服務器,為大多數的WEB服務器提供透明的支持,這些服務器包括 Apache,IIS ( ISAPI ),以及 AOL 服務器。
(31)語法的點亮顯示:PHP 4.0 語法的點亮顯示允許開發者看見源代碼而不是腳本,這個功能比PHP 3.0中的更有效。它跑得更快,更執行得更好,并且產生更緊湊的HTML代碼。
(32)由引用改變變量的值:PHP 4.0 由引用支持可變的賦值,“關聯”的2個變量之中個的任何一個的值被改變,另外的變量的值同樣被改變,這類似與C中的指針類型。
(33)在引用字符串中的變量引用:PHP 4.0 增強了在引用字符串中的變量引用。
### PHP5
PHP5在長時間的開發及多個預發布版本后,2004年7月13日,PHP5.0發布。該版本以Zend引擎Ⅱ為引擎,并且加入了新功能如PHP Data Objects(PDO)。PHP5.0版本強化更多的功能。首先,完全實現面向對象,提供名為PHP兼容模式的功能。其次是XML功能,PHP5.0版本支持可直觀地訪問XML數據、名為SimpleXML的XML處理用界面。同時還強化了XMLWeb服務支持,而且標準支持SOAP擴展模塊。數據庫方面,PHP新版本提供旨在訪問MySQL的新界面——MySQL。除此前的界面外,還可以使用面向對象界面和預處理語句(Prepared Statement)等MySQL的新功能.另外,PHP5.0上還捆綁有小容量RDBMS-SQLite.
新對象模式
*構造函數和析構函數 * 對象的引用 * 對象的克隆 * 對象中的私有、公共及受保護模式 * 接口 (Interfaces)
* 抽象類 * __call * __set 和 __get * 靜態成員
構造函數和析構函數
在 PHP4 中,當函數與對象同名時,這個函數將成為該對象的構造函數,并且在 PHP4 中沒有析構函數的概念。
在 PHP5 中,構造函數被統一命名為 __construct,并且引入了析構函數的概念,被統一命名為 __destruct。
對象的引用
在PHP4中,傳遞變量給一個函數或方法,實際是把這個變量做了一次復制,也就意味著你傳給函數或方法的是這個變量的一個副本,除非你使用了引用符號“&;” 來聲明是要做一個引用,而不是一個 Copy。在 PHP5中,對象總是以引用的形式存在的,對象中的賦值操作同樣也都是一個引用操作。
對象的克隆
當一個對象始終以引用的形式來被調用時,如果我想得到該對象的一個副本,該怎么辦呢?PHP5 提供了一個新的功能,就是對象的克隆,語法為 __clone。
抽象類
抽象類不能被實例化。
抽象類與其它類一樣,允許定義變量及方法。
抽象類同樣可以定義一個抽象的方法,抽象類的方法不會被執行,不過將有可能會在其派生類中執行。
__call
PHP5 的對象新增了一個專用方法 __call(),這個方法用來監視一個對象中的其它方法。如果你試著調用一個對象中不存在的方法,__call 方法將會被自動調用。
__set 和 __get
這是一個很棒的方法,__set 和 __get 方法可以用來捕獲一個對象中不存在的變量和方法。
類型指示
在 PHP5 中,你可以在對象的方法中指明其參數必須為另一個對象的實例。
靜態成員
靜態成員和靜態方法在面象對象編程的術語中被稱作 “類方法(class methods)” 和 “類變量(class variables)”。
“類方法” 在一個對象沒有實例化前允許被調用。同樣,“類變量” 在一個對象沒有實例化前可以被獨立操作控制(不需要用一個對象的方法來控制)。
異常處理
異常處理是公認的處理程序錯誤的理想方法,在 Java及 C 中都有這個概念,我們欣喜的看到,在 PHP5 已經加入了這方面的應用。你可以嘗試使用 “try” 和 “catch” 來控制程序的錯誤。當有錯誤發生的時候,代碼會把錯誤交給 “catch” 子句來處理,在 “catch” 子句中,你需要指明要把錯誤交給某個對象處理,這樣做可以使代碼結構看起來更清晰,因為我們可以把所有的錯誤信息交給一個對象來處理。
自定義錯誤處理
你可以很方便的用自定義的處理錯誤的代碼來控制你的程序中的意外。你僅僅需要從異常類中派生出一個自己的錯誤控制類,在你自己的錯誤控制類中,你需要有一個構造函數和一個 getMessage 方法。
命名空間
名稱空間對類的分組或函數分組很有用。它可以把一些相關的類或函數給組合到一起,方便以后調用。
例:名稱空間
~~~
<?php
namespacemy\name;//參考"定義命名空間"小節
classMyClass{}
functionmyfunction(){}
constMYCONST=1;
$a=newMyClass;
$c=new\my\name\MyClass;//參考"全局空間"小節
$a=strlen('hi');//參考"使用命名空間:后備全局函數/常量"小節
$d=namespace\MYCONST;//參考"namespace操作符和__NAMESPACE__常量”小節
$d=__NAMESPACE__.'\MYCONST';
echoconstant($d);//參考"命名空間和動態語言特征"小節
?>
~~~
注意你需要在何種情況下使用名稱空間,在實際運用中,你可能會需要聲明兩個或多個名稱一樣的對象來做不同的事情,那么你就可以把他們分別放到不同的名稱空間中去(但接口是要相同的)。
加密
從PHP5.3開始支持ZendGuard加密方式,必須安裝Zend Guard Loader,老的zend optimizer將不被支持。
Linux安裝Zend Guard Loader支持的過程:
操作系統為CentOS5.5,PHP版本為5.3.8(CentOS5.5中的PHP默認版本較低,如果要升級到PHP最新版,可以使用remi的report源進行升級)。
Windows 下面的 Zend Guard Loader 不支持php5.3.8 VC9 x86 Thread Safe而,php5.3.8 VC9 x86 Non Thread Safe 又不支持 apache。所以安裝的話,就需要安裝在iis或者和nginx搭配。
1、下載最新的Linux操作系統系下的Zend Guard Loader。
2、上傳至Linux服務器并解壓縮,注意閱讀生成目錄下的README文件。全文如下(添加必要的注釋)。在/etc/php.d/目錄下創建文件zend.ini,內容如下:
`zend_extension=/usr/lib64/php/modules/ZendGuardLoader.so`
注意路徑一定要寫上,剛開始沒寫路徑,老是加載不上ZendGuardLoader .so,也可以直接將上面的配置寫入/etc/php.ini文件中,效果一樣。
3、重啟httpd服務:service httpd restart。
4、輸出`<?php phpinfo(); ?>`
PHP 5.5 正式版發布 不再支持 Windows XP
同時 PHP 開發者也提醒用戶,PHP 5.5 也包含一些不向后兼容的內容,包括:不再支持 Windows XP 和 2003 系統;不區分大小寫的匹配函數、類;常數名稱跟 Locale 無關,這對一些使用非 ASCII 代碼的常量名的開發者需要注意的。
### 版本6設想
1、支持Unicode。Unicode是有其必然,雖然Unicode占用較多的空間,但Unicode帶來的便利性,遠超過占用空間的缺點,尤其在國際化的今天,硬件設備越來越強大,網速也大幅度的提升,這么一點小小的缺點是可以忽略的。另外一點,PHP也可以在.ini文件中設定能不能開啟支持Unicode,決定權在你自己,這是一個不錯的點子,關掉Unicode的支持,PHP的性能并不會有大幅度的提升,主要的影響在于需要引用字符串的函數。
2、Register Globals 將被移除這是一個主要的決定,老的PHP使用者會覺得Register Globals滿方便的,但是卻忽略了Register Globals會帶來程序上安全性的隱患,大多數的主機上此項功能是關閉的,印象中從PHP4.3.x版開始,此項默認配置值即是關閉狀態,PHP6正式移除Register Globals也代表著如果程序是PHP3時代的產物,將完全不能運用,除了改寫用途外,別無他法。
3、Magic Quotes 將取消Magic Quotes主要是自動轉義須要轉義的字符,此項功能移除也符合大多數PHP開發者的心聲。
4、Safe Mode 取消。老實說,這個模式不知道哪里不好,取消就取消吧,反正也用不到。
5、’var’ 別名為 ‘public’,在類中的var聲明變成public的別名,相信是為了兼容PHP5而作的決定,PHP6現在也可以稱作為OO語言了。
6、通過引用返回將出錯未來通過引用返回編譯器將會報錯 例如$a =& new b()、function &c(),OO語言默認就是引用,所以不須要再運用 &了。
7、zend.ze1 compatbility mode 將被移去(Zend.ze1相容模式將被移去),PHP5是為兼容舊有PHP4,所以在.ini中可選擇是否開啟相容模式,原由在于PHP5運用的是第二代分析引擎,但是相容模式并不是百分之百能分析 PHP4語法,所以舊時代的產物,移除。
8、Freetype 1 and GD 1 support 將不見這兩個Libs存在了很久,php6將不再支持,況且GD1早已被現在的GD2取代了。
9、dl() 被移到 SAPI 中dl()主要是讓設計師加載extension Libs,被移到 SAPI 中。
10、Register Long Array 去除 從PHP5起默認是關閉,在PHP6中正式移除。
11、一些Extension的變更例如 XMLReader 和 XMLWriter 將不再是以Extension的方式出現,他們將被移入到PHP的核心之中,并且默認是開啟,eregextension將被放入PECL,代表著它將被移出PHP核心,這也是為了讓路給新的正則表達式extension,此外,Fileinfo extension 也將被導入PHP的核心之中。
12、APC將被導入核心這是一個提高PHP性能的功能,它將被放入PHP核心中,并且可以選擇是否啟用APC。
13、告別ASP風格的起始標簽原來是為了取悅ASP開發者轉向運用 PHP,現今已經不再須要這種做法了。
最后,別期望PHP6的性能可以徹底超過PHP5,有可能PHP6的執行效率會比PHP5還要來得慢,但是可以預期的是,PHP開發小組將會努力的完善PHP6,超越PHP5。
- 序言
- 基礎
- 介紹
- 環境安裝
- Hello Word
- 類型
- 運算符
- 流程控制
- 函數
- 類與對象
- 常量
- 命名空間
- static靜態屬性與靜態方法
- 內置函數
- 自定義函數
- 時間
- 日期
- IP
- 百度地圖經緯度
- 跳轉
- 編碼處理
- 隨機字符串
- 字符串加密
- 字符串截取
- 獲取文件擴展名
- Base64
- Crypt
- Des
- Hmac
- Rsa
- Xxtea
- 文件
- 獲取團隊人數
- 實用類
- Database
- Thinkphp date
- QQ登錄
- Curl模擬Http工具類
- Date
- Http類
- Verify
- Upload類
- PHPExcel類
- IpLocation類
- Image類
- 阿里云短信發送
- WechatApi
- WeixinPay
- 常用實例
- 簡單上傳預覽
- 無限分類數據樹形格式化
- 獲取客戶端信息
- 根據經緯度獲地址相關信息
- PHP源代碼加密
- PHP采集
- PHP采集二
- PHP實現域名授權的兩種方法
- 漢字轉拼音類
- Email郵箱發送
- 文件加密
- 下載遠程圖片到本地
- Token
- 微信掃碼登錄
- 判斷訪問終端是否是微信瀏覽器
- 生成隨機數
- 正則
- 1、正則表達式介紹
- 2、正則表達式的語法規則
- 2.1普通轉義字符
- 2.2 字符類(字符集)和范圍
- 2.3 重復匹配
- 2.4 開始或結尾
- 2.5 元字符“.”
- 2.6 選擇符
- 2.8 匹配特殊字符
- 2.9 模式匹配的順序
- 2.10 模式修正符(Pattern Modifiers)
- 3、PHP中的正則表達式相關函數
- 4、PHP字符串操作相關內置函數
- 常用正則表達式匯總
- 使用POSIX兼容規則的函數
- 正則常用實例
- 驗證手機號碼
- 身份證驗證大全
- Mysql
- PHP操作Mysql
- PHP連接數據庫基本操作
- 數據庫操作語句
- 備份代碼
- MyISAM與InnoDB
- 一、表鎖差異
- 二、數據庫文件差異
- 三、索引差異
- 四、開發的注意事項
- 五、究竟該怎么選擇
- 六、重復地總結一遍
- 七、性能對比
- 八、總結
- 導入導出sql文件
- 開發工具
- PhpStorm(推薦)
- sublime text 3
- 快捷鍵匯總
- 插件說明
- 激活碼
- 擴展閱讀
- Sublime Text 2
- 配置文件詳解
- Navicat(數據庫)
- Screen to Gif
- MindMaster
- 微信公眾號
- 微信登錄
- 微信瀏覽器登錄
- 網頁授權登錄
- 微信公眾平臺接口調試工具
- 獲取access_token
- 獲取素材列表
- 獲取素材總數
- 獲取access_token接口
- 微信用戶掃碼關注
- 獲取access_token
- 生成帶參數二維碼
- 微信開發之接收事件推送
- 服務器配置
- 獲取UnionID
- 微信開放平臺綁定公眾號
- 微信批量生成二維碼并保存
- 下載微信頭像和二維碼
- 模版消息
- 未關注獲取用戶信息
- 自定義菜單創建接口
- 通過測試接口創建菜單
- 統一獲取OPENID
- 全局返回碼說明
- 微信提現功能(企業付款到用戶零錢)
- 微信支付
- 場景介紹
- 案例介紹
- 開發步驟
- 獲取用戶ip指引
- demo
- 喚醒微信APP支付
- 統一下單代碼
- web_url
- weixinpay類
- 常見問題
- 授權目錄以及當前URL未注冊的問題
- 微信的redirect_uri參數錯誤原因分析
- NaNget_brand_wcpay_request
- 申請退款
- 企業付款到零錢
- 現金紅包
- 支付寶支付
- 前提條件
- 手機網站支付DEMO
- 異步通知
- 同步通知
- Alipay SDK for PHP
- PHP SDK 集成示例
- 擴展庫
- APP支付
- 產品介紹
- 快速接入
- 客戶端DEMO&SDK
- 服務端 DEMO & SDK
- 常見錯誤
- 使用OpenSSL工具生成密鑰
- 生成 RSA 密鑰
- 普通公鑰方式
- 公鑰證書方式
- 相關閱讀
- 小程序
- 獲取不到 unionid
- 小程序支付
- 服務器維護
- Linux
- Thinkphp5.1 創建定時任務
- Windows
- 常見問題
- 編碼問題
- Scope參數錯誤或沒有Scope權限解決方法
- 500 Internal Server Error
- 擴展知識
- 堆棧
- 棧的基本操作
- 容器和依賴注入
- PHP程序員如何理解IoC/DI
- php常見術語
- Win10下安裝CentOS 7雙系統
- PHP中靜態方法和實例化方法的區別
- 用戶變量和系統變量
- 使用精選文章
- composer使用
- redis
- PHP The Right Way
- 各種版本區別
- 如何設計短信驗證碼防刷機制
- 阿里云搭建SVN服務器
- 大型網站技術架構
- 阿里云購買免費證書
- 阿里云在Apache服務器上安裝SSL證書
- https證書、搭建https網站
- 服務器缺少中間證書
- 附錄
- 版本及縮寫
- 干貨收藏