摘 要: 本文針對目前比較流行的傳統(tǒng)的服務(wù)器端腳本語言ASP及ASP.NET等都不具備跨平臺開發(fā)能力的缺點,為了提高編譯效率及滿足跨平臺的需要,提出運用一門新的服務(wù)器端腳本語言——PHP來實現(xiàn)。由于Ubuntu服務(wù)器版本的運行極為穩(wěn)定、安全可靠,本文提出了一種基于此系統(tǒng)下采用PHP數(shù)據(jù)庫函數(shù)直接存取SQL Server數(shù)據(jù)庫的實現(xiàn)方案。
關(guān)鍵詞: Ubuntu操作系統(tǒng) PHP腳本語言 擴展庫
1.引言
在最近的幾年中,PHP已經(jīng)發(fā)展成為了世界上最為流行的Web平臺,它運行在全球超過1/3的Web服務(wù)器上[1]。在Internet應(yīng)用中,CGI和ASP是比較流行的傳統(tǒng)的服務(wù)器端腳本技術(shù)。CGI腳本是一個單獨的程序,而不是嵌在HTML文檔中再通過另一個程序解釋替換的,所以它是一種“非嵌入式”的服務(wù)器端腳本。但其缺點是每一次修改CGI程序都必須重新將其編譯成執(zhí)行文件。ASP則是嵌入式的服務(wù)器端腳本,每一次修改腳本并不需要重新編譯成執(zhí)行文件就可以直接執(zhí)行,但ASP有一個致命的缺點:不具有跨平臺開發(fā)能力。為了提高編譯效率及滿足跨平臺的需要,PHP應(yīng)運而生,在Wel CGI的領(lǐng)域里掀起了一場革命。
2.相關(guān)知識介紹
2.1 Ubuntu操作系統(tǒng)
Ubuntu是一個以桌面應(yīng)用為主的Linux操作系統(tǒng),是由馬克·舍特爾沃斯創(chuàng)立,其首個版本—4.10發(fā)布于2004年10月20日,它以Debian為開發(fā)藍本。Ubuntu的開發(fā)目的是為了使個人計算機變得簡單易用,同時也提供針對企業(yè)應(yīng)用的服務(wù)器版本。與其他基于Debian的Linux發(fā)行版,如MEPIS、Xandros、Linspire、Progeny和Libranet等相比,Ubuntu更接近Debian的開發(fā)理念,它主要使用自由、開源的軟件,而其他發(fā)行版往往會附帶很多閉源的軟件。
2.2 PHP腳本語言
PHP(Personal Home Page)是一種服務(wù)器端腳本語言,它是專門為Web而設(shè)計的[2]。PHP在語法方面混合了C、Java、Perl,以及PHP以前版本的優(yōu)點。它相當于Script與CGI的結(jié)合語言,但是其執(zhí)行將效率卻比CGI更好,程序編寫也比HTML更便利且更富有彈性,程序的安全性及保密性也比Script好。在函數(shù)支持方面,PHP幾乎覆蓋了Web應(yīng)用的各個方面,其中最有特色的是數(shù)據(jù)庫函數(shù),使用PHP完成一個含有數(shù)據(jù)庫功能的網(wǎng)頁非常簡單。
3.具體實現(xiàn)方案
由于Ubuntu服務(wù)器版本的運行極為穩(wěn)定、安全可靠。還繼承了debian的優(yōu)良血統(tǒng),包管理機制十分強大。并且還包括了完整的LAMP架構(gòu)(Linux+Apache+MySQL+PHP),特別適宜中小企業(yè)的實際應(yīng)用。因此在下面實例中,我將會重點介紹如何在Ubuntu系統(tǒng)下使用PHP數(shù)據(jù)庫函數(shù)訪問SQL Server。
3.1搭建LAMP開發(fā)平臺
先安裝Apache2,在終端輸入命令:sudo apt-get install apache2。然后安裝MySQL數(shù)據(jù)庫,命令:sudo apt-get install mysql-server mysql-client;sudo/etc/init.d/mysql restart(重新啟動mysql服務(wù));sudo mysqladmin -u root password newpassword(設(shè)置mysql管理員密碼)。再安裝php5,命令:sudo apt-get install php5。
最后安裝php5的相關(guān)支持模塊:libapache2-mod-php5和php5-mysql。libapache2-mod-php5用于Apache2網(wǎng)絡(luò)服務(wù)器php5的模塊。php5-mysql直接從PHP腳本提供了MySQL的數(shù)據(jù)庫連接模塊,它包括通用的“MySQL”模塊,可用于連接到MySQL。命令:sudo apt-get install libapache2-mod-php5 php5-mysql。
3.2編譯php5源代碼
因為Ubuntu系統(tǒng)(包括debian)是不提供php5-mssql包的,其他的Linux版本大概也是沒有的。要使PHP數(shù)據(jù)庫函數(shù)能連接MSSQL,必須得有MSSQL的數(shù)據(jù)庫連接模塊支持,即mssql.so。由于在Ubuntu缺省情況下,并沒有提供C/C++的編譯環(huán)境。因此需要先安裝編譯環(huán)境。為了能夠編譯Ubuntu的內(nèi)核,Ubuntu提供了一個build-essential軟件包開發(fā)工具。命令:sudo apt-get install build-essential debhelper;sudo apt-get source php5(下載php5源代碼);sudo apt-get build-dep php5(編譯PHP所有的依賴關(guān)系)。
當前的php版本是php5-5.2.4。進入剛下載的php5源代碼文件夾,編輯modulelist模塊列表配置文檔,添加MSSQL模塊參數(shù)。命令:cd php5-5.2.4/debian;sudo gedit modulelist。在文檔中找到代碼:mysql MySQL,在其下面加入一行:mssql MSSQL。
接著編輯rules文本,該文本是一個可構(gòu)建一個架構(gòu)依賴包和架構(gòu)獨立包的假設(shè)包。命令:sudo gedit rules。在rules中找到代碼:--with-mysql=shared,/usr\\,在其下面加入一行:--with-mssql=shared,/usr \\。最后用dpkg-buildpackage命令把php5源代碼打包成deb包,并編譯安裝。命令:sudo dpkg-buildpackage。
在Ubuntu系統(tǒng)中,常用的動態(tài)鏈接庫和軟件包的配置文件一般都存放在/usr/lib 文件夾下。因此,編譯結(jié)束后,在php5-5.2.4/debian/php5-mssql/usr/lib/php5/20060613+lfs文件夾中找到mssql.so文件,然后把它拷貝到usr/lib/php5/20060613+lfs文件夾里。命令:sudocp/php5-5.2.4/debian/php5-mssql/usr/lib/php5/20060613+lfs/mssql.so /usr/lib/php5/20060613+lfs/。
這時要注意,如果當前不是用root用戶登錄系統(tǒng)的話,則是沒有權(quán)限對php5-5.2.4文件夾中的文件進行拷貝操作。因此要先切換到root用戶,再進行拷貝操作。命令:su(輸入root密碼后即可切換到root用戶);nautilus(進入root的根目錄)。
3.3添加mssql支持
最后,在php5默認的配置加載目錄etc/php5/conf.d中添加一個mssql.ini文件,作用是加載PHP的mssql支持。即載入mssql.so擴展庫文件。命令:sudo gedit /etc/php5/conf.d/mssql.ini。輸入代碼:# configuration for php MSSQL module;extension=mssql.so。保存關(guān)閉,重啟apache2。至此所有操作已全部完成。
4.結(jié)語
PHP并不是一種擁有龐雜紛繁體系結(jié)構(gòu)的語言,而正是這種簡單、完全為Web設(shè)計的、解釋型的小語言體系,使得PHP成為互聯(lián)網(wǎng)上使用最為廣泛的編程語言之一[3]。PHP的確能夠滿足互聯(lián)網(wǎng)行業(yè)對開發(fā)效率、維護便捷型和執(zhí)行力方面的要求,特別在數(shù)據(jù)庫的支持方面,更是具有強大的優(yōu)勢及先進性。因此學會使用PHP函數(shù)訪問各種類型的數(shù)據(jù)庫是PHP開發(fā)人員必須熟悉與掌握的知識之一。
參考文獻:
[1][美]古曼茲,貝肯,瑞桑斯著.簡張桂譯.PHP 5權(quán)威編程.北京:電子工業(yè)出版社,2007.
[2][澳]Luke Welling,Laura Thomson著.武欣,邵煜譯.PHP和MySQL Web開發(fā)(原書第三版).北京:機械工業(yè)出版社,2005.
[3][美]勒道夫,塔特羅,麥肯泰爾著.陳浩,胡丹,徐景譯.PHP程序設(shè)計(第2版).北京:電子工業(yè)出版社,2007.