- PHP Web開發(fā)快速入門及實(shí)例精選
- 陸昌輝等編著
- 12705字
- 2018-12-29 21:27:52
第一部分 PHP的語法基礎(chǔ)
第1章 PHP入門
PHP是一種簡單、實(shí)用的動態(tài)網(wǎng)頁編程語言,也是一種廣泛用于Open Source(開放源代碼)的,并適合Web開發(fā)且可以嵌入HTML的多用途腳本語言。本章內(nèi)容覆蓋了PHP語言的背景,PHP的歷史,最新版本PHP5.0的特點(diǎn),PHP的安裝,以及運(yùn)行環(huán)境的配置等內(nèi)容,在最后還介紹了一個簡單的PHP程序范例。
1.1 PHP技術(shù)介紹
PHP是Hypertext Preprocessor的縮寫,代表“超級文本預(yù)處理語言”,是一種服務(wù)器端的HTML腳本/編程語言,也是一種簡單的、面向?qū)ο蟮摹⒔忉屝偷摹踩摹⑿阅芊浅8叩摹ⅹ?dú)立于架構(gòu)的、可移植的、動態(tài)的腳本語言。語言的風(fēng)格有點(diǎn)類似于C語言,又傳承了Java的簡單精神,并創(chuàng)造一個比Java更容易使用的程序開發(fā)環(huán)境。它還混合了C、Java、Perl等語言,再加上PHP自創(chuàng)新的語法和提供了豐富的函數(shù)及功能,因此,PHP以方便快速的風(fēng)格迅速在Web系統(tǒng)開發(fā)中占有了重要地位。
PHP作為開放源代碼腳本語言,正成為世界上最流行的Web應(yīng)用程序編程語言之一。PHP對于初學(xué)者來說非常簡單,只需要很少的編程知識就能使用PHP建立一個真正交互的動態(tài)Web站點(diǎn),同時也給專業(yè)程序員提供了各種高級的特性。
PHP主要應(yīng)用于以下3個方面:
1.服務(wù)器端腳本:PHP最開始是被設(shè)計(jì)成用來創(chuàng)建動態(tài)Web網(wǎng)頁的,PHP程序執(zhí)行速度快,目前大量的網(wǎng)站都在使用PHP程序。PHP不僅可以生成HTML文件,而且還可以生成XML文檔、圖形、Flash動畫和PDF文件等。
2.命令行腳本:PHP可以和Perl一樣以命令行方式運(yùn)行腳本,可以用命令行腳本來執(zhí)行一些系統(tǒng)管理任務(wù)。
3.客戶端GUI應(yīng)用:對于非常精通PHP的開發(fā)人員,如果希望在客戶端應(yīng)用程序中使用PHP的一些高級特性,還可以利用PHP-GTK來編寫跨平臺的應(yīng)用程序。
PHP最初是1994年由生于丹麥格陵蘭島的Rasmus Lerdorf創(chuàng)建的,剛剛開始只是一個簡單的用Perl語言編寫的程序,用來統(tǒng)計(jì)他自己網(wǎng)站的訪問者。后來又用C語言重新編寫,包括可以訪問數(shù)據(jù)庫。在1995年以Personal Home Page Tools (PHP Tools)開始對外發(fā)表第一個版本,Lerdorf寫了一些介紹此程序的文檔,并且發(fā)布了PHP1.0。在這一早期的版本中,提供了訪客留言本、訪客計(jì)數(shù)器等簡單的功能。
在1995年年中,PHP2.0發(fā)布了。第二版定名為PHP/FI (Form Interpreter)。PHP/FI加入了對Mysql, SQL Server的支持,從此建立了PHP在動態(tài)網(wǎng)頁開發(fā)上的地位。到了1996年年底,全世界就有15000個網(wǎng)站使用PHP/FI,而到1997年,據(jù)統(tǒng)計(jì),使用PHP/FI的網(wǎng)站數(shù)字已經(jīng)超過五萬個。
在1997年,Rasmus Lerdorf開始了第三版的開發(fā)計(jì)劃,Zeev Suraski及Andi Gutmans等人加入到了開發(fā)小組中,第三版定名為PHP3。
2000年5月,PHP 4.0正式發(fā)布。它使用了Zend (Zeev + Andi)引擎,提供更高的性能,同時還包含了其他一些關(guān)鍵功能,比如:支持更多的Web服務(wù)器、HTTP Sessions的支持、輸出緩存(Output Buffering)、更安全的處理用戶輸入的方法以及一些新的語言結(jié)構(gòu)。
PHP的特性包括:
● 開放的源代碼:所有的PHP源代碼都是可以得到的,而且PHP是免費(fèi)的。
● 基于服務(wù)器端:PHP是運(yùn)行在服務(wù)器端的,充分利用了服務(wù)器的性能;PHP執(zhí)行引擎還會將用戶經(jīng)常訪問的PHP程序駐留在內(nèi)存中,其他用戶在一次訪問這個程序時就不需要重新編譯了,只要直接執(zhí)行內(nèi)存中的代碼就可以了,這也是PHP高效率的體現(xiàn)之一。
● 跨平臺:PHP可以在所有的主流操作系統(tǒng)上運(yùn)行,包括Linux、Unix的各種變種(包括HP-UX、Solaris和OpenBSD)、Microsoft Windows、Mac OS X、RISC OS等。PHP已經(jīng)支持了大多數(shù)的Web服務(wù)器,包括Apache、Microsoft Internet Information Server (IIS)、Personal Web Server (PWS)、Netscape以及iPlant server、Oreilly Website Pro Server、Caudium、Xitami、OmniHTTPd等。對于大多數(shù)的服務(wù)器,PHP均提供了一個相應(yīng)模塊;PHP支持CGI標(biāo)準(zhǔn),使得PHP能夠作為CGI處理器來工作;PHP還支持ODBC,即Open Database Connection Standard(開放數(shù)據(jù)庫連接標(biāo)準(zhǔn)),因此可以連接任何其他支持該世界標(biāo)準(zhǔn)的數(shù)據(jù)庫。但PHP提供的數(shù)據(jù)庫接口支持彼此不統(tǒng)一,比如對Oracle, MySQL, Sybase的接口,彼此都不一樣。
● 效率高:PHP消耗相當(dāng)少的系統(tǒng)資源。
● 圖像處理:PHP能動態(tài)創(chuàng)建圖像。
● 支持利用諸如LDAP、IMAP、SNMP、NNTP、POP3、HTTP、COM (Windows環(huán)境)等協(xié)議服務(wù)。可以開放原始網(wǎng)絡(luò)端口,使得任何其他的協(xié)議能夠協(xié)同工作。PHP支持和所有Web開發(fā)語言之間的WDDX復(fù)雜數(shù)據(jù)交換。關(guān)于相互連接,PHP已經(jīng)支持了對Java對象的即時連接,并且可以將他們自由地用作PHP對象。
● 有效的文本處理特性:支持從POSIX擴(kuò)展或者Perl正則表達(dá)式到XML文檔解析。為了解析和訪問XML文檔,支持了SAX和DOM標(biāo)準(zhǔn),可以使用XSLT擴(kuò)展庫來轉(zhuǎn)換XML文檔。
提示:正則表達(dá)式描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。正則表達(dá)式是由普通字符(例如字符a到z)以及特殊字符(稱為元字符)組成的文字模式,它作為一個模板,將某個字符模式與所搜索的字符串進(jìn)行匹配。
PHP4.0與以前的版本相比,整個腳本程序的核心改動較大,它讓程序執(zhí)行速度更快。其腳本描述更強(qiáng)大并且更復(fù)雜,最顯著的特征是速率比的增加。PHP4.0這些優(yōu)異的性能是PHP腳本引擎重新設(shè)計(jì)產(chǎn)生的結(jié)果:引擎由Zeev Suraski和Andi Gutmans從底層全面重寫。PHP4.0使用Zend腳本引擎,使用了一種更有效的“編譯——執(zhí)行”方式,而不是PHP 3.0采用的“執(zhí)行——當(dāng)解析時”模型。
雖然PHP4.0新增了許多特性,但是PHP4.0的面向?qū)ο笮阅芎苋酢?/p>
1.2 PHP5.0的新特點(diǎn)
2004年7月13日,官方正式版PHP 5.0發(fā)布,對于PHP語言本身還是PHP的用戶來講,PHP5發(fā)布都算得上是一個里程碑式的版本,使PHP成為一個設(shè)計(jì)完備、真正具有面向?qū)ο竽芰Φ哪_本語言。
PHP5.0發(fā)布之前的各個PHP版本以簡單的語法、豐富的庫函數(shù)以及極快的腳本解釋執(zhí)行速度,贏得了許多開發(fā)者的青睞,幾乎成為Linux、Unix平臺上首選的WEB開發(fā)語言。然而,站在語言本身角度,PHP的語法,特別是面向?qū)ο螅∣bject Oriented, OO)方面的語法設(shè)計(jì)并不完善。大量的庫函數(shù)加入其中,而語言模型的發(fā)展則相對緩慢。雖然在PHP4.0中加入了面向?qū)ο蟮脑O(shè)計(jì),但其語言模型并不完善,PHP4.0版本中,諸如析構(gòu)函數(shù)、抽象類(接口)、異常處理等基本元素的類缺乏,極大限制了利用PHP來完成大規(guī)模應(yīng)用程序的能力。
而PHP5.0的誕生,則從根本上改變了PHP的上述弊端。Zend II引擎的采用,完備對象模型、改進(jìn)的語法設(shè)計(jì),終于使得PHP成為一個設(shè)計(jì)完備、真正具有面向?qū)ο竽芰Φ哪_本語言。
PHP5.0版本增加或增強(qiáng)了以下功能:
● 支持新的對象模型和許多新特點(diǎn)的Zend引擎。
● 新的SimpleXML擴(kuò)展,PHP對象輕松訪問操作。
● XML功能:PHP5.0版本支持可直觀地訪問XML數(shù)據(jù)、名為SimpleXML的XML處理界面,同時還強(qiáng)化了XML Web服務(wù)支持,而且支持SOAP擴(kuò)展模塊。
● 數(shù)據(jù)庫方面:PHP新版本不僅提供了訪問MySQL的新界面——MySQLi的功能,還可以使用面向?qū)ο蠼缑婧皖A(yù)處理語句(Prepared Statement)等MySQL的新功能。
另外,PHP5.0上還捆綁有小容量的RDBMS——SQLite。
● 改進(jìn)了流的設(shè)計(jì),包括通過流來操作底層的socket。
● 新增了許多函數(shù):PHP5.0中新添了一些函數(shù),下面是新增函數(shù)列表:
表1-1 PHP5.0新增函數(shù)表

續(xù)表

續(xù)表

1.3 安裝和配置PHP
1.3.1 在Windows下安裝PHP5.0
PHP需要Web服務(wù)器來支持運(yùn)行,下面以兩種最常見的服務(wù)器IIS和Apache2服務(wù)器為例來分別介紹PHP的安裝。如果不加特殊說明,以下的介紹同時適用于Windows xp、Windows 2000、Windows 2003各版本。
1. IIS服務(wù)器
在Windows 2000中,IIS默認(rèn)是安裝的,可以通過“開始”→“設(shè)置”→“控制面板”→“管理工具”→ "Internet信息服務(wù)”來打開它。Windows xp沒有默認(rèn)安裝,可以通過Windows的“開始”→“設(shè)置”→“控制面板”→“添加刪除程序”→“添加/刪除Windows組件”來安裝它。
最新的PHP安裝程序包可以在PHP的官方網(wǎng)站:http://www.php.net/downloads.php下載。把下載來的PHP安裝程序包解壓縮到C盤根目錄(用戶也可以選擇其他不同的目錄),解壓縮后將目錄名改為 "PHP"。
(1)打開剛才解壓縮的PHP目錄,有一個名為 "php.ini-dist" 的文件,就是PHP的配置文件了,將此文件改名成 "php.ini",然后復(fù)制到系統(tǒng)目錄中(如果用戶的系統(tǒng)裝在C盤,XP下就是 "C:\windows" , Windows2000下是 "C:\winnt")。php.ini文件可以存放在系統(tǒng)目錄中,也可以和php.exe存放在同一目錄中。
(2)打開IIS信息服務(wù)控制臺,右擊“默認(rèn)網(wǎng)站”圖標(biāo)。選擇“屬性”選項(xiàng),打開“默認(rèn)網(wǎng)站屬性”選項(xiàng),然后再選擇“主目錄”選項(xiàng),如下圖1-1所示。

圖1-1 IIS服務(wù)器主目錄
(3)單擊“配置”按鈕,用戶會在彈出來的看到已經(jīng)定義的文檔類型。單擊“添加”按鈕,在接著彈出來的對話框的可執(zhí)行文件文本框中敲入用戶的php.exe所在的絕對路徑加上“%s %s",在這里是 "c:\php\php.exe %s %s",擴(kuò)展名文本框中寫上php程序處理的后綴名,在這里寫入“.php",其余選項(xiàng)按默認(rèn)設(shè)置即可,如圖1-2所示。

圖1-2 添加PHP擴(kuò)展名映射
Windows 2003增強(qiáng)了IIS的安全性,配置方法與Window 2000和Windows xp的配置方法不同,配置方法如下:
步驟(1)和(2)與前面介紹的方法相同。
(3)應(yīng)用程序配置,如圖1-3所示。

圖1-3 應(yīng)用程序配置
(4)單擊 "Web服務(wù)擴(kuò)展”→“新建Web服務(wù)擴(kuò)展”。

圖1-4 新建Web服務(wù)擴(kuò)展
(5)將新建Web服務(wù)擴(kuò)展的“擴(kuò)展名”改為 "php",然后添加 "php.exe路徑”。
(6)選擇php的服務(wù)擴(kuò)展,然后單擊“允許”。

圖1-5 添加php.exe路徑

圖1-6 php的服務(wù)擴(kuò)展
至此,IIS服務(wù)器的PHP安裝就完成了。
2. Apache2服務(wù)器
Apache安裝比較簡單,下面介紹在Windows操作系統(tǒng)上安裝Apache2.0.55的過程,具體步驟如下:
(1)首先到Apache的官方網(wǎng)站(http://www.apache.org/)上下載安裝包,運(yùn)行該安裝包,將出現(xiàn)如圖1-7所示的界面。

圖1-7 Apache安裝界面
(2)出現(xiàn)Apache HTTP Server 2.0.55的安裝向?qū)Ы缑妫瑔螕?"Next" 繼續(xù)。

圖1-8 安裝使用許可
(3)確認(rèn)同意軟件安裝使用許可條例,選擇 "I accept the terms in the license agreement",單擊 "Next" 繼續(xù)。
(4)閱讀完將Apache安裝到Windows上的使用須知后,單擊 "Next" 繼續(xù)。
(5)設(shè)置系統(tǒng)信息,在Network Domain下填入用戶的域名(比如:163.com),在Server Name下填入服務(wù)器名稱(比如:www.163.com,也就是主機(jī)名加上域名),在Administrator' s Email Address下填入系統(tǒng)管理員的聯(lián)系電子郵件地址(比如:163@163.com),上述三條信息僅供參考,其中聯(lián)系電子郵件地址會在發(fā)生系統(tǒng)故障時提供給訪問者,三條信息均可任意填寫,無效的也行。下面有兩個選擇,圖片上選擇的是為系統(tǒng)所有用戶安裝,使用默認(rèn)的80端口,并作為系統(tǒng)服務(wù)自動啟動;另外一個是僅為當(dāng)前用戶安裝,使用端口8080,手動啟動。一般選擇如圖1-10所示,單擊 "Next" 繼續(xù)。

圖1-9 使用須知

圖1-10 設(shè)置系統(tǒng)信息
(6)選擇安裝類型,Typical為默認(rèn)安裝,Custom為用戶自定義安裝,這里選擇Custom,有更多可選項(xiàng),單擊 "Next" 繼續(xù)。

圖1-11 安裝類型
(7)出現(xiàn)選擇安裝選項(xiàng)界面,如圖1-12所示,單擊 "Apache HTTP Server 2.0.55”,選擇 "This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下屬子部分內(nèi)容,全部安裝在本地硬盤上”,單擊 "Change...”,手動指定安裝目錄,安裝路徑如圖1-13所示。

圖1-12 安裝選項(xiàng)界面

圖1-13 安裝路徑
(8)在這里選擇安裝在 "D:\”,可以自行選取,一般建議不要安裝在操作系統(tǒng)所在盤,免得操作系統(tǒng)崩潰了之后,還原操作把Apache配置文件也清除了,單擊 "OK" 繼續(xù),安裝界面如圖1-14所示。

圖1-14 安裝界面
(9)返回剛才圖1.14的安裝界面,單擊 "Next" 繼續(xù),安裝選項(xiàng)確認(rèn)界面如圖1-15所示。

圖1-15 安裝選項(xiàng)確認(rèn)界面
(10)確認(rèn)安裝選項(xiàng)無誤,如果認(rèn)為要再檢查一遍,可以單擊 "Back",一步步返回檢查,單擊 "Install" 開始按前面設(shè)定的選項(xiàng)進(jìn)行安裝,正在安裝界面如圖1-16所示。

圖1-16 正在安裝界面
(11)正在安裝界面,請耐心等待,直到出現(xiàn)如圖1-17所示的畫面為止。

圖1-17 安裝向?qū)瓿山缑?/p>
(12)安裝向?qū)С晒ν瓿珊螅谄聊挥蚁陆堑臓顟B(tài)欄應(yīng)該出現(xiàn)了如圖1-18所示的綠色圖標(biāo),表示Apache服務(wù)已經(jīng)開始運(yùn)行,單擊 "Finish" 結(jié)束Apache的軟件安裝。

圖1-18 Apache圖標(biāo)
在圖標(biāo)上單擊鼠標(biāo)左鍵,出現(xiàn)如圖1-19所示的Apache圖標(biāo)右鍵菜單界面,有 "Start(啟動)”、 "Stop(停止)”、 "Restart(重啟動)”三個選項(xiàng),可以很方便地對安裝的Apache服務(wù)器進(jìn)行上述操作。

圖1-19 Apache圖標(biāo)右鍵菜單
現(xiàn)在來測試一下按默認(rèn)配置運(yùn)行的網(wǎng)站界面,在IE地址欄打http://127.0.0.1(或者h(yuǎn)ttp://localhost),單擊“轉(zhuǎn)到”,就可以看到如圖1-20所示的頁面,表示Apache服務(wù)器已安裝成功。

圖1-20 Apache服務(wù)器已安裝成功界面
現(xiàn)在開始配置Apache服務(wù)器,使它更好地為用戶服務(wù)。事實(shí)上,如果不配置,用戶安裝目錄下的Apache2\htdocs文件夾就是網(wǎng)站的默認(rèn)根目錄,在里面放入文件就可以了。單擊“開始”→“程序”→ "Apache HTTP Server 2.0.55”,選擇 "Configure Apache Server",單擊 "Edit the Apache httpd conf Configuration file" 菜單,就可以打開編輯Apache配置文件。
每次配置文件的改變,保存后,必須在Apache服務(wù)器重啟動后生效。
下面,使用editplus軟件對httpd.conf進(jìn)行編輯配置,如圖1-21所示。配置Apache服務(wù)器的具體步驟如下:

圖1-21使用editplus編輯配置httpd.conf
(1)查找關(guān)鍵字 "DocumentRoot"(也就是網(wǎng)站根目錄),找到后將引號("")內(nèi)的地址改成所建網(wǎng)站的根目錄,一般文件地址的“\”在Apache里要改成“/”,如圖1-22所示。

圖1-22 指定DocumentRoot
(2)通過查找“<Directory" 來定位,將引號("")內(nèi)的地址改成跟DocumentRoot的一樣,如圖1-23所示。

圖1-23 指定Directory目錄
(3)查找關(guān)鍵字 "DirectoryIndex"(目錄索引,也就是在僅指定目錄的情況下,默認(rèn)顯示的文件名),可以添加很多文件名,系統(tǒng)會根據(jù)從左至右的順序來優(yōu)先顯示,以單個半角空格隔開。比如有些網(wǎng)站的首頁是index.htm,就在光標(biāo)那里加上 "index.htm"。這些文件名是任意的,不一定非得是 "index.html",比如 "index.php" 等,都可以,如圖1-24所示。

圖1-24 指定DirectoryIndex
(4)這里有一個選擇配置選項(xiàng),以前可能要配置,在5.0版本就不用配置了,就是強(qiáng)制所有輸出文件的語言編碼,html文件里有語言標(biāo)記(<META http-equiv="Content-Type"content="text/html; charset=gb2312">,這個語言標(biāo)記就是設(shè)定文檔語言為gb2312)的也會強(qiáng)制轉(zhuǎn)換。如果打開的網(wǎng)頁出現(xiàn)亂碼,請先檢查網(wǎng)頁內(nèi)有沒有上述html語言標(biāo)記,如果沒有,添加上去就能正常顯示了。把“# DefaultLanguage nl" 前面的“#”去掉,把 "nl" 改成要強(qiáng)制輸出的語言,中文是 "zh-cn",如圖1-25所示。

圖1-25 默認(rèn)語言編碼
(5)簡單的Apache配置就到此結(jié)束了,現(xiàn)在利用先前的小圖標(biāo)重啟動,所有的配置就生效了。
在Apache2服務(wù)器中,PHP的安裝有兩種不同模式,一種是CGI模式(CGI executable)安裝方式,另一種是模塊化安裝方式。在CGI模式安裝方式下,如果客戶機(jī)請求一個PHP文件,Web服務(wù)器就調(diào)用php.exe去解釋這個文件,然后再把解釋的結(jié)果以網(wǎng)頁的形式返回給客戶機(jī)。而在模塊化安裝方式中,PHP是與Web服務(wù)器一起啟動并運(yùn)行的,所以從某種角度上來說,以Apache模塊方式安裝的PHP5.0有著比CGI模式更好的安全性以及更好的執(zhí)行效率和速度。
下面介紹PHP的安裝與配置,具體步驟如下:
(1)將下載的PHP安裝文件php-5.0.5-Win32.zip右鍵解壓縮,如圖1-26所示。

圖1-26 解壓
(2)指定解壓縮的位置,假設(shè)安裝在 "D:\php" 目錄下,如圖1-27所示。

圖1-27 解壓目錄
(3)查看解壓縮后的文件夾內(nèi)容,找到 "php.ini-dist" 文件,將其重命名為 "php.ini",打開編輯,查找 "register_globals",找到有一個 "register_globals = Off" 值,如圖1-28所示,這個值是用來打開全局變量的,比如表單送過來的值,如果這個值設(shè)為 "Off",就只能用“$_POST[’變量名’]、$_GET[’變量名’]”等來取得送過來的值,如果設(shè)為 "On",就可以直接使用“$變量名”來獲取送過來的值。如果不需要兼容以前的PHP程序,請?jiān)O(shè)register_globals的值為 "Off",可以增強(qiáng)PHP程序的安全性。

圖1-28 設(shè)置register_globals
(4)設(shè)置要加載的模塊,功能就是使PHP能夠直接調(diào)用其他模塊,比如訪問mysql,如圖1-29所示,選擇要加載的模塊,去掉前面的“; ”,就表示要加載此模塊了。比如要加載mysql模塊,就把“; extension=php_mysql.dll" 前的“; ”去掉。所有的模塊文件都放在php解壓縮目錄的 "ext" 之下。要想加載的模塊進(jìn)行工作還需要設(shè)置extension_dir的值,該值設(shè)置模塊所在的目錄,例如:extension_dir = "D:/ php/ext/"。

圖1-29 加載模塊
(5)按照以上操作,PHP的配置基本完成。還需要配置Apache服務(wù)器的配置文件httpd.conf,打開httpd.conf文件,在最后添加以下命令,如圖1-30所示:

圖1-30 系統(tǒng)變量配置
ScriptAlias /php/ "D:/ php/" Action application/x-httpd-php "/php/php-cgi.exe" AddType application/x-httpd-php .php AddType application/x-httpd-php .php3 AddType application/x-httpd-php .php4
(6)上面的ScriptAlias命令設(shè)置PHP所在目錄,Action命令設(shè)置PHP解析處理程序,AddType命令設(shè)置支持的文件后綴名。重啟Apache服務(wù)器,使用設(shè)置生效。
(7)現(xiàn)在開始將PHP以module方式與Apache相結(jié)合,使PHP融入Apache,先打開Apache的配置文件httpd.conf,在文件最后,添加如圖1-31所示選中的三行,第一行 "PHPIniDir "c:/windows" ”是指明PHP配置文件php.ini所在的位置,第二行 "LoadFile"D:/WEB/php5/php5ts.dll"”加載php5ts.dll文件,第三行 "LoadModule php5_module"D:/WEB/php5/php5apache2.dll"”指明以模式方式運(yùn)行PHP,其中的 "D:/WEB/php5/”要改成PHP的安裝目錄。復(fù)制PHP安裝目錄下的libmysql.dll、libmhash.dll、libmcrypt.dll、libeay32.dll、fdftk.dll、fribidi.dll、gds32.dll、msql.dll、ssleay32.dll和yaz.dll至系統(tǒng)目錄 "C:\WINDOWS\system32”中,如果操作系統(tǒng)不是Windows XP或Windows 2003請修改正確的system32目錄路徑。如果不復(fù)制上述文件,可能導(dǎo)致有些功能模塊不能加載,比如:mysql.dll模塊。

圖1-31 以module方式加載PHP
(8)在Apache的配置文件httpd.conf的最后,加入 "AddType application/x-httpdphp .php" 、 "AddType application/x-httpd-php .php3”等,指明可以執(zhí)行PHP的文件類型,如圖1-32所示。

圖1-32 配置可執(zhí)行PHP的文件格式
(9)目錄默認(rèn)索引文件可以在Apache的配置文件httpd.conf中設(shè)置,因?yàn)楝F(xiàn)在加了PHP模塊,也可以把 "index.php" 設(shè)為默認(rèn)索引文件,優(yōu)先順序可以自由設(shè)置,設(shè)置如圖1-33所示。

圖1-33 默認(rèn)索引文件
(10)至此,PHP的安裝和Apache的結(jié)合已經(jīng)全部完成,重啟Apache服務(wù),用戶的Apache服務(wù)器就支持了PHP。
1.3.2 在Linux平臺下安裝PHP
下面介紹在Linux下如何安裝PHP、MySQL5和Apache2。MySQL5的下載地址為http://mysql.org/downloads/mysql/5.0.html。PHP5.0可從Php.net下載,下載地址為:http://www.php.net/downloads.php。Apache 2可以從Apache.org下載。可能還需要以下的支持庫:libxml2庫從XmlSoft.org下載,zlib庫從Gzip.org下載。
1.解壓安裝包(建議解壓在同一目錄中)
$ tar -xzvf mysql-max-5.0.15-linux-i686.tar.gz $ tar -xzvf php-5.0.5.tar.gz $ tar -xzvf httpd-2.0.50.tar.gz $ tar -xzvf libxml2-2.6.11.tar.gz $ tar -xzvf zlib-1.2.1.tar.gz
2.安裝支持庫(安裝前建議檢查文件夾usr/local下的內(nèi)容)
檢查是否安裝了libxml2或者zlib,如果沒有安裝的話,按照如下步驟進(jìn)行安裝:
編譯和安裝libxml2 XML解析器:
$ cd /解壓目錄/libxml2-2.6.11 $ ./configure(默認(rèn)裝到了/usr/local/lib下,指定的話用--profix=/目錄) $ make && make install
對zlib做類似的操作:
$ cd /解壓目錄/zlib-1.2.1 $ ./configure(默認(rèn)裝到了/usr/local/lib下,指定的話用--profix=/目錄) $ make && make install
3.安裝Apache
Apache使用PHP有兩種方式:作為動態(tài)模塊,其在運(yùn)行狀態(tài)時可載入到Web服務(wù)器,或者作為靜態(tài)模塊,其可直接編譯到Web服務(wù)器代碼中。
為了能以Apache2.0模塊使PHP動態(tài)載入,Apache服務(wù)器必須以動態(tài)共享對象(DSO, Dynamic Shared Object)編譯。可以通過傳遞--enable-so參數(shù)到Apache 2.0configure使這一特性生效:
$ cd /解壓目錄/httpd-2.0.50 $ ./configure --prefix=/usr/local/apache2--enable-so $ make && make install
4. MySQL5的安裝(如系統(tǒng)已經(jīng)安裝了mysql,則下述相應(yīng)步驟可以省略)(下載二進(jìn)制包直接解壓在/usr/local下)。
$groupadd mysql $useradd -g mysql mysql $ln -s mysql mysql $cd mysql $scripts/mysql_install_db --user=mysql chown -R root . chown -R mysql date chown -R mysql
如果想測試MySQL是否安裝成功,關(guān)閉原有的mysql服務(wù),進(jìn)入目錄下的bin目錄下執(zhí)行如下操作:
./safe_mysqld
啟動MySQL服務(wù)。
./mysql -u root -p密碼
進(jìn)入MySQL。
5.php的安裝
$ ./configure --prefix=/usr/local/php5(配置php的參數(shù)) --with-apxs2=/usr/local/apache2/bin/apxs --with-libxml-dir=/usr/local/lib --with-zlib-dir=/usr/local/lib --with-mysql=/usr/local/mysql (mysql的安裝目錄就是那個解壓后的目錄) --with-mysqli=/usr/local/mysql/bin/mysql_config --with-gd --enable-soap --enable-sockets $ make $ make install
將安裝目錄下的php.ini-dist文件改為php.ini,存放到/usr/local/lib目錄下。
6.編輯Apache配置文件,即/usr/local/apache2/conf/httpd. conf,并添加如下一行:
AddType application/x-httpd-php .php
7.并在DirectoryIndex的那一行加上index.php,保存文件并重啟動服務(wù)器。
注意:
(1)要以root用戶安裝;
(2)在啟動Apache和MySQL服務(wù)器時應(yīng)確保原有的服務(wù)關(guān)閉;
(3)配置文件修改后必須重啟服務(wù)器。
1.3.3 驗(yàn)證PHP安裝
配置完成后,想測試PHP是否安裝成功,可以在空根目錄下建立一個測試PHP程序文件,如:phpinfo.php,然后寫入簡單的PHP代碼,如:
<? phpinfo (); ?>
保存后,使用瀏覽器訪問http://localhost/phpinfo.php如果能見到如圖1-34所示界面,而無錯誤提示,就表明配置PHP環(huán)境成功。

圖1-34 PHP運(yùn)行環(huán)境測試
1.4 PHP配置文件
php.ini是PHP在啟動時會讀取的配置文件。在PHP 5.x版的配置文件為php.ini-dist;若PHP安裝成服務(wù)器的模塊,則在Web服務(wù)器啟動執(zhí)行時會讀取,之后就不再讀取。因此,改動配置的話要重新啟動Web服務(wù)器。若使用CGI方式運(yùn)行時,每處理一個請求就要啟動一個CGI進(jìn)程,當(dāng)請求繁忙時,這將給服務(wù)器帶來繁重的負(fù)擔(dān)。
PHP5.0的php.ini配置文件詳細(xì)介紹如下:
;這個文件控制了PHP許多方面的觀點(diǎn)。為了讓PHP讀取這個文件,它必須被命名為 ; ' php.ini'。PHP將在這些地方依次查找該文件:當(dāng)前工作目錄;環(huán)境變量PHPRC ;指明的路徑;編譯時指定的路徑。 ;在Windows下,編譯時的路徑是Windows安裝目錄。 ;在命令行模式下,php.ini的查找路徑可以用-c參數(shù)替代。 ;該文件的語法非常簡單。空白字符和用分號’’開始的行被簡單地忽略。
;章節(jié)標(biāo)題(例如:[Foo])也被簡單地忽略,即使將來它們可能有某種的意義。 ; ;指示被指定使用如下語法: ;指示標(biāo)識符=值 ; directive = value ;指示標(biāo)識符是大小寫敏感的,foo=bar不同于FOO=bar。 ; ;值可以是一個字符串,一個數(shù)字,一個PHP常量(如:E_ALL or M_PI), INI常 ;量中的一個(On, Off, True, False, Yes, No and None),或是一個表達(dá)式 ;(如:E_ALL & ~E_NOTICE),或是用引號括起來的字符串("foo")。 ; ; INI文件的表達(dá)式被限制于位運(yùn)算符和括號。 ; — itwise OR ; & itwise AND ; ~ itwise NOT ; ! boolean NOT ; ;布爾標(biāo)志可用1, On, True or Yes這些值置于開的狀態(tài)。 ;它們可用0, Off, False or No這些值置于關(guān)的狀態(tài)。 ; ;一個空字符串可以用在等號后不寫任何東西表示,或者用None關(guān)鍵字: ; ; foo= ;將foo置為空字符串 ; foo=none;將foo置為空字符串 ; foo="none";將foo置為字符串’none' ; ;如果在值設(shè)置中使用常量,而這些常量屬于動態(tài)調(diào)入的擴(kuò)展庫(不是PHP的擴(kuò)展, ;就是Zend的擴(kuò)展),僅可以調(diào)入這些擴(kuò)展的行之后使用這些常量。 ; ;所有在php.ini-dist文件里設(shè)定的值與內(nèi)建的默認(rèn)值相同(這是說,如果php.ini ;沒被使用或者刪掉了這些行,默認(rèn)值與之相同)。 ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;語言選項(xiàng); ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; engine =On ;使PHP scripting language engine (PHP腳本語言引擎)在Apache下有效。
short_open_tag = On ;允許tags將被識別。 asp_tags =Off ;允許ASP類型tags precision =14 ;浮點(diǎn)類型數(shù)顯示時的有效位數(shù) y2k_compliance = Off ;是否打開2000年適應(yīng)(可能在非Y2K適應(yīng)的瀏覽器中導(dǎo)致問題) output_buffering = Off ;輸出緩存允許在輸出正文內(nèi)容之后發(fā)送header(標(biāo)頭,包括cookies)行, ;其代價(jià)是使輸出層減慢速度。可以在運(yùn)行時打開輸出緩存, ;或者在這里將指示設(shè)為On而使得所有文件的輸出緩存打開。 output_handler = ;可以重定向腳本的所有輸出到一個函數(shù),那樣做可能對處理或以日志記錄它有用。例 ;如將這個output_handler設(shè)為"ob_gzhandler",則輸出會被透明地為支持gzip或deflate ;編碼的瀏覽器壓縮。設(shè)一個輸出處理器自動地打開輸出緩沖。 implicit_flush =Off ;強(qiáng)制flush(刷新)讓PHP告訴輸出層在每個輸出塊之后自動刷新自身數(shù)據(jù)。 ;這等效于在每個print ()或echo ()調(diào)用和每個HTML塊后調(diào)用flush ()函數(shù)。 ;打開這項(xiàng)設(shè)置會導(dǎo)致嚴(yán)重的運(yùn)行時沖突,建議僅在debug過程中打開。 allow_call_time_pass_reference = On ;是否讓強(qiáng)迫函數(shù)調(diào)用時按引用傳遞參數(shù)。 ;這一方法可能在將來版本的PHP/Zend里不再支持。 ;指定哪些參數(shù)按引用傳遞的方法是在函數(shù)聲明里。 ;可以嘗試關(guān)閉這一選項(xiàng)并確認(rèn)腳本仍能正常工作,以保證在將來版本的語言里它們 ;仍能工作(將在每次使用該特點(diǎn)時得到一個警告)。 ; Safe Mode安全模式 safe_mode =Off safe_mode_exec_dir = safe_mode_allowed_env_vars = PHP_ ; ? Setting certain environment variables ; ? may be a potential security breach.
;該指示包含用逗號分隔的前綴列表。 ;安全模式中,用戶僅可以替換以在此列出的前綴開頭的環(huán)境變量的值。 ;默認(rèn)地,用戶將僅能設(shè)定以PHP_開頭的環(huán)境變量,(如:PHP_FOO=BAR)。 ;注意:如果這一指示為空,PHP將允許用戶更改任意環(huán)境變量! safe_mode_protected_env_vars = LD_LIBRARY_PATH ;這條指示包含一個用逗號分隔的環(huán)境變量列表,那是最終用戶不能用putenv ()更 ;改的。這些變量甚至在safe_mode_allowed_env_vars設(shè)置為允許的情況下得到保護(hù)。 disable_functions = ;這條指示可以為了安全的原因而讓特定函數(shù)失效。 ;它接受一個用逗號分隔的函數(shù)名列表。 ;這條指示不受安全模式是否打開的影響。 ;語法高亮模式的色彩。 ;只要能被接受的東西就能工作。 highlight.string = #DD0000 highlight.comment = #FF8000 highlight.keyword = #007700 highlight.bg =#FFFFFF highlight.default = #0000BB highlight.html =#000000 ; Misc雜項(xiàng) expose_php = Off ;決定PHP是否標(biāo)示它裝在服務(wù)器上的事實(shí)(例如:加在它給Web服務(wù) ;發(fā)送的信號上)。在出現(xiàn)什么power-by的header的時候,可以把它關(guān)掉。 ;它不會有安全上的威脅,但它使檢查服務(wù)器上是否安裝了PHP成為了可能。 ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; Resource Limits ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; max_execution_time=30 ;每個腳本的最大執(zhí)行時間,按秒計(jì) memory_limit=8388608 ;一個腳本最大可使用的內(nèi)存總量(這里是8MB) ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
; Error handling and logging ; ; 出錯控制和登記 ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;錯誤報(bào)告是按位的,將數(shù)字加起來就能得到想要的錯誤報(bào)告等級。 ; E_ALL - 所有的錯誤和警告 ; E_ERROR - 致命性運(yùn)行時錯 ; E_WARNING - 運(yùn)行時警告(非致命性錯) ; E_PARSE - 編譯時解析錯誤 ; E_NOTICE - 運(yùn)行時提醒(這些經(jīng)常是你代碼的bug引起的, ;也可能是有意的行為造成的,如:基于未初始化的變量自動初始化為一個空字符串 ;的事實(shí)而使用一個未初始化的變量。 ; E_CORE_ERROR - 發(fā)生于PHP啟動時初始化過程中的致命錯誤 ; E_CORE_WARNING- 發(fā)生于PHP啟動時初始化過程中的警告(非致命性錯) ; E_COMPILE_ERROR- 編譯時致命性錯 ; E_COMPILE_WARNING- 編譯時警告(非致命性錯) ; E_USER_ERROR - 用戶產(chǎn)生的出錯消息 ; E_USER_WARNING- 用戶產(chǎn)生的警告消息 ; E_USER_NOTICE - 用戶產(chǎn)生的提醒消息 ;例子: ; error_reporting=E_ALL&~E_NOTICE;顯示所有的錯誤,除了提醒 ; error_reporting=E_COMPILE_ERROR—E_ERROR—E_CORE_ERROR;僅顯示錯誤 display_errors = On ;顯示出錯誤信息(作為輸出的一部分),在最終發(fā)布的Web站點(diǎn)上, ;強(qiáng)烈建議關(guān)掉這個特性,并使用錯誤日志代替(參看下面)。 ;在最終發(fā)布的Web站點(diǎn)繼續(xù)讓display_errors有效,可能會暴露一些有關(guān)安全的信 ;息,例如Web服務(wù)上的文件路徑、數(shù)據(jù)庫規(guī)劃或別的一些信息。 display_startup_errors = Off ;甚至當(dāng)display_erroes打開了,發(fā)生在PHP的啟動步驟中的錯誤也不會被顯示。 ;強(qiáng)烈建議保持使display_startup_errors關(guān)閉,除了在改錯過程中。 log_errors =Off ;在日志文件里記錄錯誤(服務(wù)器指定的日志,stderr標(biāo)準(zhǔn)錯誤輸出,或下面error_log ;指定的日志),強(qiáng)烈建議在最終發(fā)布的Web站點(diǎn)以日志記錄錯誤取代直接錯誤輸出。 track_errors=Off;保存最近一個錯誤/警告消息于變量 $php_errormsg (boolean)中。
; error_prepend_string="";在錯誤信息前輸出的字符串 ; error_append_string="";在錯誤信息后輸出的字符串 ; error_log=filename;以指定文件記錄錯誤日志 ; error_log=syslog ;在系統(tǒng)日志syslog (NT下的事件日志,Windows 95下無效) ;中記錄錯誤日志 warn_plus_overloading=Off ;當(dāng)將‘+’用于字符串時警告 ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; Data Handling ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; variables_order ="EGPCS" ;這條指示描述了PHP記錄GET, POST, Cookie, Environment and Built-in這些變量 ;的順序(以G, P, C, E&S代表,通常以EGPCS或GPC的方式引用)。 ;按從左到右記錄,新值取代舊值。 register_globals = On ;是否將這些EGPCS變量注冊為全局變量。若不想讓用戶數(shù)據(jù)不在全局范圍內(nèi)混亂 ;的話,就要關(guān)閉它。這和track_vars連起來用更有意義,這樣就可以通過 ; $HTTP_*_VARS[] 數(shù)組訪問所有的GPC變量。 register_argc_argv = On ;告訴PHP是否聲明argv和argc變量(注:這里argv為數(shù)組,argc為變量數(shù)), ;其中包含用Get方法傳來的數(shù)據(jù),若不想用這些變量,應(yīng)當(dāng)關(guān)掉它以提高性能。 track_vars =On ;使$HTTP_*_VARS[]數(shù)組有效,這里*在使用時用ENV, POST, GET, COOKIE or ; SERVER替換。 post_max_size =8M ; PHP將接受的POST數(shù)據(jù)的最大大小。 gpc_order ="GPC";這條指示被人反對。用variables_order代替。 ; Magic quotes magic_quotes_gpc = On ;在輸入的GET/POST/Cookie數(shù)據(jù)里使用魔術(shù)引用,魔術(shù)引用是指用轉(zhuǎn)義符加在引用 ;性的控制字符上,如 \’等。 magic_quotes_runtime= Off ;對運(yùn)行時產(chǎn)生的數(shù)據(jù)使用魔術(shù)引用,比如用SQL查詢得到的數(shù)據(jù),用exec ()函數(shù)得
;到的數(shù)據(jù),等等。 magic_quotes_sybase=Off ;采用Sybase形式的魔術(shù)引用(用 ’ ’ 脫出 ’ 而不用 \') ;自動在PHP文檔之前和之后添加文件 auto_prepend_file = auto_append_file = ;像4.04b4一樣,PHP默認(rèn)地總是在 "Content-type:” 頭標(biāo)輸出一個字符的編碼方 ;式。讓輸出字符集失效,只要設(shè)置為空即可。 ; PHP的內(nèi)建默認(rèn)值是text/html default_mimetype = "text/html" ; default_charset = "iso-8859-1" ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; Paths and Directories ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; include_path = ; include路徑設(shè)置,UNIX: "/path1:/path2" Windows: "\path1; \path2" doc_root = ; php頁面的根路徑,僅在非空時有效 user_dir = ;告知php在使用/~username打開腳本時到哪個目錄下去找,僅在非空時有效 ; upload_tmp_dir = ;存放用HTTP協(xié)議上傳的文件的臨時目錄(在沒指定時使用系統(tǒng)默認(rèn)的) upload_max_filesize = 2097152 ;文件上傳默認(rèn)地限制為2 Meg extension_dir = c:\php\ ;存放可加載的擴(kuò)充庫(模塊)的目錄 enable_dl =On ;是否使dl ()有效。 ;在多線程服務(wù)器上dl ()函數(shù)不能很好地工作,例如IIS or Zeus,并在其上默認(rèn)為禁止 ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; File Uploads ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; file_uploads = On ;是否允許以HTTP方式上傳文件 ; upload_tmp_dir =
;指定用HTTP上傳的文件的臨時目錄(未指定則使用系統(tǒng)默認(rèn)) upload_max_filesize = 2M ;上傳文件的最大許可大小 ; Fopen wrappers ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; allow_url_fopen = On ;是否允許把URLs當(dāng)作http:.. 或把文件當(dāng)作ftp:... ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 動態(tài)擴(kuò)展 ; ; Dynamic Extensions ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;若希望自動加載一個擴(kuò)展庫,用下面的語法: ; extension=modulename.extension ;例如,在Windows上,extension=msql.dll ;在UNIX下,extension=msql.so ;注意,這只應(yīng)當(dāng)是模塊的名字,不需要將目錄信息放在里面。 ;用上面的extension_dir指示指定擴(kuò)展庫的位置。 ; Windows擴(kuò)展 ; extension=php_nsmail.dll extension=php_calendar.dll ; extension=php_dbase.dll ; extension=php_filepro.dll extension=php_gd.dll ; extension=php_dbm.dll ; extension=php_mssql.dll ; extension=php_zlib.dll ; extension=php_filepro.dll ; extension=php_imap4r2.dll ; extension=php_ldap.dll ; extension=php_crypt.dll ; extension=php_msql2.dll ; extension=php_odbc.dll ;注意,MySQL的支持現(xiàn)在是內(nèi)建的,因此不需要用它的dll
;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 模塊設(shè)定 ; ; Module Settings ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; [Syslog] define_syslog_variables = Off ;是否定義各種系統(tǒng)日志變量,如:$LOG_PID, $LOG_CRON,等等。 ;關(guān)掉它可以提高效率,運(yùn)行時可以調(diào)用函數(shù)define_syslog_variables ()來定義這些變量 [mail function] SMTP =localhost ;僅用于Win32系統(tǒng) sendmail_from = me@localhost.com;僅用于Win32系統(tǒng) ; sendmail_path= ;僅用于unix,也可支持參數(shù)(默認(rèn)的是’sendmail-t-i')。 [Debugger] debugger.host = localhost debugger.port = 7869 debugger.enabled = False [Logging] ;這些配置指示用于示例的日志記錄機(jī)制。 ; logging.method =db ; logging.directory = /path/to/log/directory [Java] ; java.class.path = .\php_java.jar ; java.home = c:\jdk ; java.library = c:\jdk\jre\bin\hotspot\jvm.dll ; java.library.path = .\ [SQL] sql.safe_mode = Off [ODBC] ; uodbc.default_db =Not yet implemented ; uodbc.default_user =Not yet implemented
; uodbc.default_pw =Not yet implemented uodbc.allow_persistent=On;允許或禁止持久連接 uodbc.check_persistent = On;在重用前檢查連接是否還可以用 uodbc.max_persistent=-1;持久連接的最大數(shù),-1代表無限制。 uodbc.max_links =-1;連接的最大數(shù)目(持久和非持久), -1代表無限制。 uodbc.defaultlrl=4096;控制LONG類型的字段,返回變量的字節(jié)數(shù)。 uodbc.defaultbinmode = 1;控制二進(jìn)制數(shù)據(jù),0代表通過,1返回原樣,2轉(zhuǎn)換為字符。 [MySQL] mysql.allow_persistent=On;允許或禁止持久連接。 mysql.max_persistent=-1;持久連接的最大數(shù),-1代表無限制。 mysql.max_links =-1;連接的最大數(shù)目(持久和非持久), -1代表無限制。 mysql.default_port = ; mysql_connect ()使用的默認(rèn)端口,如不設(shè)置,mysql_connect ()將使用變量。 ;$MYSQL_TCP_PORT,或在/etc/services下的mysql-tcp條目(unix),或在編譯時 ;定義的MYSQL_PORT(按這樣的順序),在Win32環(huán)境,將僅檢查MYSQL_PORT。 mysql.default_socket= ;用于本地MySql連接的默認(rèn)套接字名, ;為空則使用MySql內(nèi)建值。 mysql.default_host = ; mysql_connect ()默認(rèn)使用的主機(jī)(安全模式下無效)。 mysql.default_user = ; mysql_connect ()默認(rèn)使用的用戶名(安全模式下無效)。 mysql.default_password= ; mysql_connect ()默認(rèn)使用的密碼(安全模式下無效)。 ;注意,在這個文件下保存密碼通常不是一個好方法,任何可以使用PHP訪問的用戶都 ;可以運(yùn)行’echo cfg_get_var ("mysql.default_password")’來顯示那個密碼! ;而且當(dāng)然地,任何有讀該文件權(quán)力的用戶也能看到那個密碼。 [mSQL] msql.allow_persistent=On;允許或禁止持久連接。 msql.max_persistent =-1;持久連接的最大數(shù),-1代表無限制。 msql.max_links =-1;連接的最大數(shù)目(持久和非持久), -1代表無限制。 [PostgresSQL] pgsql.allow_persistent=On;允許或禁止持久連接。 pgsql.max_persistent=-1;持久連接的最大數(shù),-1代表無限制。 pgsql.max_links =-1;連接的最大數(shù)目(持久和非持久), -1代表無限制。 [Sybase]
sybase.allow_persistent=On;允許或禁止持久連接。 sybase.max_persistent=-1;持久連接的最大數(shù),-1代表無限制。 sybase.max_links =-1;連接的最大數(shù)目(持久和非持久), -1代表無限制。 ; sybase.interface_file = "/usr/sybase/interfaces" sybase.min_error_severity=10;顯示的錯誤的最低嚴(yán)重性。 sybase.min_message_severity=10;顯示的消息的最低重要性。 sybase.compatability_mode = Off ;與舊版PHP 3.0兼容的模式,若打開,這將導(dǎo)致PHP自動地把根據(jù)結(jié)果的Sybase ;類型賦予它們,而不是把它們?nèi)?dāng)成字符串。這個兼容模式不會永遠(yuǎn)留著。 [Sybase-CT] sybct.allow_persistent=On ;允許或禁止持久連接。 sybct.max_persistent=-1 ;持久連接的最大數(shù),-1代表無限制。 sybct.max_links =-1 ;連接的最大數(shù)目(持久和非持久), -1代表無限制。 sybct.min_server_severity=10;顯示的錯誤的最低嚴(yán)重性。 sybct.min_client_severity=10;顯示的消息的最低重要性。 [bcmath] bcmath.scale=0;用于所有bcmath函數(shù)的十進(jìn)制數(shù)數(shù)字的個數(shù) [browscap] ; browscap = extra/browscap.ini browscap = C:\WIN\SYSTEM\inetsrv\browscap.ini [Informix] ifx.default_host = ; ifx_connect ()默認(rèn)使用的主機(jī)(安全模式下無效)。 ifx.default_user = ; ifx_connect ()默認(rèn)使用的用戶名(安全模式下無效)。 ifx.default_password = ; ifx_connect ()默認(rèn)使用的密碼(安全模式下無效)。 ifx.allow_persistent =On;允許或禁止持久連接。 ifx.max_persistent =-1;持久連接的最大數(shù),-1代表無限制。 ifx.max_links =-1;連接的最大數(shù)目(持久和非持久), -1代表無限制。 ifx.textasvarchar =0 ;若打開,select狀態(tài)符返回一個 "text blob" 字段的內(nèi)容,而不是它的id。 ifx.byteasvarchar =0 ;若打開,select狀態(tài)符返回一個 "byte blob" 字段的內(nèi)容,而不是它的id。 ifx.charasvarchar =0 ;追蹤從固定長度的字符列里剝離的空格,可能對Informix SE用戶有效。 ifx.blobinfile =0
;若打開,text和byte blobs的內(nèi)容被導(dǎo)出到一個文件,而不是保存到內(nèi)存。 ifx.nullformat =0 ; NULL(空)被作為空字段返回,除非這里被設(shè)為1。 ;若被設(shè)置為1, NULL將作為字串NULL返回。 [Session] session.save_handler =files ;用于保存/取回?cái)?shù)據(jù)的控制方式。 session.save_path = C:\win\temp ;在save_handler設(shè)為文件時傳給控制器的參數(shù),這是數(shù)據(jù)文件將保存的路徑。 session.use_cookies =1 ;是否使用cookies。 session.name =PHPSESSID ;用在cookie里的session的名字。 session.auto_start =0 ;在請求啟動時初始化session。 session.cookie_lifetime =0 ;按秒鐘記的cookie的保存時間,若為0時,直到瀏覽器被重啟。 session.cookie_path =/ ; cookie的有效路徑。 session.cookie_domain = ; cookie的有效域。 session.serialize_handler=php;用于連接數(shù)據(jù)的控制器,php是PHP的標(biāo)準(zhǔn)控制器。 session.gc_probability =1 ;按百分比的碎片整理進(jìn)程,在每次session初始化的時候開始的可能性。 session.gc_maxlifetime =1440 ;在這里數(shù)字指的是秒數(shù)后,保存的數(shù)據(jù)將被視為碎片并由gc進(jìn)程清理掉。 session.referer_check= ;檢查HTTP引用以使額外包含于URLs中的ids無效。 session.entropy_length =0 ;從文件中讀取的字節(jié)數(shù)。 session.entropy_file = ;指定這里建立session id。 ; session.entropy_length =16 ; session.entropy_file =/dev/urandom session.cache_limiter =nocache ;設(shè)為{nocache, private, public},以決定HTTP的緩存問題。 session.cache_expire =180 ;文檔在n分鐘后過時。 session.use_trans_sid =1 ;使用過渡性的sid支持 url_rewriter.tags ="a=href, area=href, frame=src, input=src, form=fakeentry" [MSSQL] ; extension=php_mssql.dll mssql.allow_persistent =On;允許或禁止持久連接。 mssql.max_persistent =-1;持久連接的最大數(shù),-1代表無限制。 mssql.max_links =-1;連接的最大數(shù)目(持久和非持久), -1代表無限制。
mssql.min_error_severity=10;顯示的錯誤的最低嚴(yán)重性。 mssql.min_message_severity=10;顯示的消息的最低重要性。 mssql.compatability_mode=Off;與舊版的PHP 3.0兼容的模式。 [Assertion] ; assert.active=On ;斷言(表達(dá)式),默認(rèn)生效。 ; assert.warning=On ;為每個失敗的斷言發(fā)出警告。 ; assert.bail=Off ;默認(rèn)不釋放。 ; assert.callback=0 ;如果斷言失敗,就調(diào)用一個用戶函數(shù)。 ; assert.quiet_eval =0 ;用當(dāng)前error_reporting ()的返回值來評估表達(dá)式,如果想在eval ()前后調(diào)用 ; error_reporting (0),就設(shè)置為真。 [Ingres II] ii.allow_persistent =On;允許或禁止持久連接。 ii.max_persistent =-1;持久連接的最大數(shù),-1代表無限制。 ii.max_links = -1;連接的最大數(shù)目(持久和非持久), -1代表無限制。 ii.default_database = ;默認(rèn)database(格式為:[node_id::]dbname[/srv_class])。 ii.default_user = ;默認(rèn)user。 ii.default_password = ;默認(rèn)password。 [Verisign Payflow Pro] pfpro.defaulthost ="test.signio.com";默認(rèn)的Signio服務(wù)器。 pfpro.defaultport =443;連接的默認(rèn)端口。 pfpro.defaulttimeout =30;按秒計(jì)的默認(rèn)超時時間。 ; pfpro.proxyaddress = ;默認(rèn)的代理IP地址(如果需要)。 ; pfpro.proxyport = ;默認(rèn)的代理端口。 ; pfpro.proxylogon = ;默認(rèn)的代理登錄(logon用戶名)。 ; pfpro.proxypassword = ;默認(rèn)的代理密碼。 [Sockets] sockets.use_system_read =On;使用系統(tǒng)的read ()函數(shù)替代php_read ()封裝。 ; Local Variables: (局部變量) ; tab-width: 4 ; End:
要看目前的系統(tǒng)配置,可以運(yùn)用phpinfo ()來看到。以下為選項(xiàng)配置:
表1-2 phpinfo ()中的系統(tǒng)配置選項(xiàng)作用說明表

續(xù)表

續(xù)表

表1.3列出了一些與session有關(guān)的配置。
表1-3 與session有關(guān)的配置

1.5 運(yùn)行第一個PHP頁面
PHP頁面是嵌入了PHP命令代碼的HTML頁面。Web服務(wù)器執(zhí)行PHP命令并將輸出HTML文檔傳送至瀏覽器,例1.1顯示了一個完整的PHP頁面。
例1.1: hello.php
<html> <head> <title>第一個PHP程序</title> </head> <body> <? php echo "hello,這是第一個PHP程序"; ?> </body> </html>
將例1.1的內(nèi)容保存到文件hello.php中,然后單擊瀏覽器查看,結(jié)果顯示如圖1-35所示。

圖1-35 第一個PHP程序
在這個例子中,PHP代碼被放在標(biāo)簽<? PHP和?>之間。PHP命令echo將輸出字符串 "hello,這是第一個PHP程序”插入到HTML文件中。
在瀏覽器中,單擊右鍵選擇查看源代碼,可以查看到如下內(nèi)容:
<html> <head> <title>第一個PHP程序</title> </head> <body> hello,這是第一個PHP程序 </body> </html>
- Getting Started with Citrix XenApp? 7.6
- Objective-C應(yīng)用開發(fā)全程實(shí)錄
- Game Programming Using Qt Beginner's Guide
- Python數(shù)據(jù)分析基礎(chǔ)
- Rake Task Management Essentials
- MySQL 8 DBA基礎(chǔ)教程
- Learning Zurb Foundation
- C語言程序設(shè)計(jì)教程
- 計(jì)算機(jī)應(yīng)用技能實(shí)訓(xùn)教程
- Java 從入門到項(xiàng)目實(shí)踐(超值版)
- 跟戴銘學(xué)iOS編程:理順核心知識點(diǎn)
- 深入解析Java編譯器:源碼剖析與實(shí)例詳解
- Node.js實(shí)戰(zhàn):分布式系統(tǒng)中的后端服務(wù)開發(fā)
- 產(chǎn)品架構(gòu)評估原理與方法
- JavaScript Unit Testing