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