php概念以及相關知識

PHP(PHP: Hypertext Preprocessor的縮寫,中文名:“PHP:超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言JavaPerl的特點,入門門檻較低,易於學習,使用廣泛,主要適用於Web開發領域。PHP的文件後綴名爲*.php。

語言解析

[1]PHP 獨特的語法混合CJavaPerl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯代碼,編譯可以達到加密優化代碼運行,使代碼運行更快。

2發展

PHP安裝

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篩選器

ISAPI篩選器

在1997年,任職於 Technion IIT公司的兩個以色列程序設計師:Zeev Surask
i 和 Andi Gutmans,重寫了 PHP 的剖析器,成爲 PHP 3 的基礎。而 PHP 也在這個時候改稱爲PHP:Hypertext Preprocessor.[5]。經過幾個月測試,開發團隊在1997年11月發佈了 PHP/FI 2。隨後就開始 PHP 3 的開放測試,最後在1998年6月正式發佈 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 發佈後開始改寫PHP 的核心,這個在1999年發佈的剖析器稱爲 Zend Engine[7],他們也在以色列的 Ramat Gan 成立了 Zend Technologies 來管理 PHP 的開發。
在2000年5月22日,以Zend Engine 1.0爲基礎的PHP 4正式發佈,2004年7月13日則發佈了PHP 5,PHP 5則使用了第二代的Zend Engine[5]。PHP包含了許多新特色,像是強化的面向對象功能、引入PDO(PHP Data Objects,一個存取數據庫的延伸函數庫)、以及許多效能上的增強。PHP 4已經不會繼續
PHP

PHP

更新,以鼓勵用戶轉移到PHP 5。
2008年PHP 5成爲了PHP唯一的有在開發的PHP版本。將來的PHP 5.3將會加入Late static binding和一些其他的功能強化。PHP 6 的開發也正在進行中,主要的改進有移除register_globals、magic quotes 和 Safe mode的功能。
PHP最新穩定版本:5.3.21(2013.1.17)
PHP最新發布版本:5.5.1(2013.7.18)修復了20個bug及其一些優化。
2013年6月20日,PHP開發團隊自豪地宣佈立即推出PHP 5.5.0。此版本包含了大量的新功能和bug修復。需要開發者特別注意的一點是不再支持 Windows XP 和 2003 系統。

3開發工具(IDEs)

IDE(Integrated Development Environment)是一種集成了軟件開發過程中所需主要工具的集成開發環境,其功能包括但不僅限於代碼高亮(source hilighting)、代碼補全(code completion)、調試(debugging)、構建(build)、版本控制(version control)等。一些常見的PHP IDEs如下:
  • Zend Studio:商業版,基於eclipse
  • Eclipse with PDT:免費
  • Sublime Text:可免費使用
  • Coda:商業版,針對Mac用戶
  • NetBeans:免費
  • PHP Storm:商業版
  • Aptana Studio:免費
  • PhpEd:商業版
  • Komodo IDE/Edit:IDE爲商業版,Edit可免費使用
  • Adobe Dreamweaver:商業版
  • ...
除去集成開發環境,具備代碼高亮功能的常見文本編輯器因其輕巧靈活也常被選作開發工具,例如:Notepad++Editplus等等。

4特性

PHP的特性包括:
1. PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。
2. PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,
PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。
3. PHP支持幾乎所有流行的數據庫以及操作系統
4. 最重要的是PHP可以用C、C++進行程序的擴展!

5優勢

開放的源代碼

所有的PHP源代碼事實上都可以得到。

PHP是免費的

和其它技術相比,PHP本身免費且是開源代碼。

快捷性

程序開發快,運行快,技術本身學習快。嵌入於HTML:因爲PHP可以被嵌入於HTML語言,它相對於其他語言。編輯簡單,實用性強,更適合初學者。

跨平臺性強

由於PHP是運行在服務器端的腳本,可以運行在UNIXLINUXWINDOWSMac OS下。[2]

效率高

PHP消耗相當少的系統資源

圖像處理

用PHP動態創建圖像,PHP圖像處理默認使用GD2。且也可以配置爲使用image magick進行圖像處理。

面向對象

在php4,php5 中,面向對象方面都有了很大的改進,php完全可以用來開發大型商業程序。

專業專注

PHP支持腳本語言爲主,同爲類C語言。

6技術應用

1,僞靜態 2,靜態頁面生成 3,數據庫緩存 4,過程緩存 5,div+cssw3c標準 6,大負荷
7,分佈式 8,flex 9,桌面程序應用(不擅長) 10,支持MVC模型 11,Smarty模版引擎

7版本區別

[3]PHP版本VC6與VC9、Thread Safe與None-Thread Safe等的區別
PHP的大版本主要分三支:PHP4/PHP5/PHP6
其中,PHP4由於太古老、對OO支持不力已基本被淘汰,請無視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,非線程安全)的版本能夠更好的提高效率。

如何查看當前運行的PHP的版本?

一個很簡單的辦法就是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最合適的搭檔。

8PHP3

PHP3跟Apache服務器的緊密結合的特性;
PHP

PHP

加上它可以不斷的更新及加入新的功能,而且幾乎支持所有主流與非主流數據庫。再以它能高速的執行效率,使得PHP在1999年中的使用站點已經超過了150000。加上它的源代碼完全公開,在 Open Source意識擡頭的今天,它更是這方面的中流砥柱。不斷地有新的函數庫加入,以及不停地更新的活力。使得PHP無論在UNIX、LINUX或是Windows的平臺上都可以有更多新的功能。它提供豐富的函數,使得在程序設計方面有着更好的支持。

9PHP4

簡介

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 增強了在引用字符串中的變量引用。

10PHP5

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 方法。

命名空間

名稱空間對類的分組或函數分組很有用。它可以把一些相關的類或函數給組合到一起,方便以後調用。
例:名稱空間
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    namespace Math
    {
        class Complex
        {
            //...code...
            function __construct()
            {
                print("hey");
            }
        }
    }
    $m = new Math::Complex();
?>
注意你需要在何種情況下使用名稱空間,在實際運用中,你可能會需要聲明兩個或多個名稱一樣的對象來做不同的事情,那麼你就可以把他們分別放到不同的名稱空間中去(但接口是要相同的)。

加密

從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,內容如下:
1
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 代碼的常量名的開發者需要注意的。

11PHP6設想

支持Unicode
支持Unicode是有其必然,雖然Unicode佔用較多的空間,但Unicode帶來的便利性,遠超過佔用空間的缺點,尤其在國際化的今天,硬件設備越來越強大,網速也大幅度的提升,這麼一點小小的缺點是可以忽略的。另外一點,PHP也可以在.ini文件中設定是否開啓支持Unicode。
移除RegisterGlobals
這是一個重要的決定,許多新進的PHP開發者會覺得RegisterGlobals蠻方便的,但是卻忽略了RegisterGlobals會帶來程序上安全性的隱患,大多數的主機上此項功能是關閉的,印象PHP4.3.x版開始時,此項默認設置值即是關閉狀態,PHP6正式移除RegisterGlobals也代表着如果程序是由PHP3時代的產物,將完全無法使用,除了改寫一途外,別無他法。相信PHP世界裏,仍使用PHP3時代所產生的程序應該是少之又少。
Magic Quotes 將消失
Magic Quotes主要是自動轉義需要轉義的字符,此項功能移除也符合大多數PHP開發者的心聲。
  1. 4.Safe Mode 取消
'var' 別名爲 'public'
在類中的var聲明變成public的別名,相信是爲了兼容PHP5而作的決定,PHP6也可以稱作爲OO語言了。
通過引用返回將出錯
透過引用返回編譯器將會報錯 例如$a =& new b()、function &c(),OO語言默認就是引用,所以不需要再使用&;了。
zend.ze1 compatbility mode 將被移去
Zend.ze1相容模式將被移去,PHP5是爲兼容舊有PHP4,所以在.ini中可選擇是否開啓相容模式,原因在於PHP5使用的是第二代解析引擎,但是相容模式並不是百分之百能解析PHP4語法,所以舊時代的產物,移除。
Freetype 1 and GD 1 support 將不見
這兩個是很久的Libs,所以不再支持,GD1早已被GD2取代了。
dl() 被移到 SAPI 中
dl()主要是讓設計師加載extension Libs,被移到 SAPI 中。
Register Long Array 去除
從PHP5起默認是關閉,再PHP6中正式移除。
一些Extension的變更
例如 XMLReader 和 XMLWriter將不再是以Extension的方式出現,他們將被移入到PHP的核心之中,並且默認是開啓,eregextension將被放入PECL,代表着它將被移出PHP核心,這也爲了讓路給新的正則表達式extension,此外,Fileinfoextension 也將被導入PHP的核心之中。
APC將被導入核心
這是一個提高PHP性能的功能,它將被放入PHP核心中,並且可以選擇是否啓用APC
告別ASP風格的起始標籤
原來是爲了取悅ASP開發者轉向使用PHP,現今已經不再需要這種做法了
windows環境下安裝
由於php是一個zip文件(非install版),安裝較爲簡單
解壓就行.把解壓的 php-5.2.1-Win32重命名爲 php5.並複製到C盤目錄下.即安裝路徑爲 c:\php
1 找到php目錄下的 php.ini.recommended (或者php.ini-dist)文件,重命名爲 php.ini
並複製到系統盤的windows目錄下(以c:\windows爲例).
2 再把php目錄下的php5ts.dll,libmysql.dll複製到目錄 c:\windows\system32下.
3 把php\ext目錄下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件複製到c:\windows\system32下
注意:不要把 php_mysql.dll 和 php_mssql.dll 混淆
如果沒有加載 php_gd2.dll php將不能處理圖像.沒有加載php_mysql.dll php將不支持mysql函數庫
php_mbstring.dll在後面使用phpmyadmin時支持寬字符
配置php並關聯MySQL
1 設置擴展路徑
查找 extension_dir 有這麼一行extension_dir = "./"將此行改成
1
extension_dir = "C:\php\ext"
其中C:\php是你安裝php的路徑.路徑不正確將無法加載dll
(注意:有些php版本是 ;extension_dir = "./" 要把前面的分號去掉)
2 分別查找
1
2
3
;extension=php_mbstring.dll
;extension=php_gd2.dll
;extension=php_mysql.dll
把上面3項前面的分號去掉,這樣apache啓動時就可以加載這些dll了
注意不要把 ;extension=php_mysql.dl 和 ;extension=php_mssql.dl 混淆
當然前面我們也把這些dll複製到system32下了.(大家在安裝的過程中都注意到如何把一些dll加載入來了.
以後要加載一些dll,比如說php_mysqli.dll,也就懂得怎麼加載了)
3 設置會話保存路徑
查找session.save_path 有這麼一行
1
; session.save_path = "N;/path"
在此行後加入一行(注意是加入一行,不是加到後面)
1
session.save_path = "C:\WINDOWS\Temp"
保存到你的臨時目錄下,這裏完全可以保存到windows臨時目錄Temp下
4 是否顯示錯誤 display_errors
出於安全性考慮,display_errors 有些版本也默認爲 Off.
就是說在調試時,如果php代碼有誤,就只出現一個空白頁.而不會顯示出錯原因和出錯行數.
這樣調試起來將非常不便,建議根據自己需要修改
查找
1
display_errors = Off (注意不是 ; - display_errors = Off [Security])
改成
1
display_errors = On
5 php5時差問題
<?php echo date("Y-m-d H:i:s");?>;時間相差八小時
爲什麼呢?PHP5系列版本新增了時區設置,默認爲格林威治時間,與中國所在的東8區正好相差8個小時
查找date.timezone有這麼一行;date.timezone =將;去掉,改成
1
date.timezone = PRC
其中PRC:People's Republic of China中華人民共和國,
PHP的文件上傳問題
文件上傳成敗關鍵的幾點php.ini配置
文件上傳的程序沒有錯,但php的配置很可能導致文件不能上傳成功.
  1. 一般的文件上傳,除非文件很小.就像一個5M的文件,很可能要超過一分鐘才能上傳完.
但在php中,默認的該頁最久執行時間爲 30 秒.就是說超過30秒,該腳本就停止執行.
這就導致出現 無法打開網頁的情況.這時我們可以修改 max_execution_time
在php.ini裏查找max_execution_time默認是30秒.改爲
1
max_execution_time = 0
0表示沒有限制
另一種方法是可以在php程序中加入set_time_limit();來設定頁面最久執行時間.
1
set_time_limit(0);//0表示沒有限制
  1. 修改 post_max_size 設定 POST 數據所允許的最大大小。此設定也影響到文件上傳。
php默認的post_max_size 爲2M.如果 POST 數據尺寸大於 post_max_size $_POST 和 $_FILES superglobals 便會爲空.查找 post_max_size .改爲
1
post_max_size = 150M
  1. 很多人都會改了第二步.但上傳文件時最大仍然爲 8M.
爲什麼呢.我們還要改一個參數upload_max_filesize 表示所上傳的文件的最大大小。
查找upload_max_filesize,默認爲8M改爲
1
upload_max_filesize = 100M
另外要說明的是,post_max_size 大於 upload_max_filesize 爲佳.
四. active perl 需要安裝到c:/perl
五. ZendOptimizer 安裝時把 apache 服務器關掉,在過程中要指定 apache 和 php 的安裝路徑一、

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章