摘 要: 由于版本的問題,在Windows Server 2008下安裝和加載微軟的PHP訪問SQL Server 2008模塊SQLSRV過程中會遇到一些問題。討論了如何安裝和配置Web服務(wù)器(IIS)角色,應(yīng)用FastCGI服務(wù)支持PHP,以及安裝微軟發(fā)布的SQL Server Native Client 2012組件和SQL Server Driver for PHP驅(qū)動程序等問題。將應(yīng)用PHP開發(fā)的維吾爾語考試閱卷系統(tǒng)安裝在Windows Server 2008下,提高了資源的利用率和系統(tǒng)的穩(wěn)定性。
關(guān)鍵詞: PHP; SQL Server 2008; 維吾爾文; 閱卷系統(tǒng)
中圖分類號:TP391.1 文獻(xiàn)標(biāo)識碼:A 文章編號: 2095-2163(2016)01-
Abstract: Due to the operating system version, some problems happened when installed and loaded PHP and the SQLSRV modules to visit SQL Server 2008 in Windows Server 2008. This article discusses how to install and configure the web server (IIS) role, support PHP by application of FastCGI services, and install Microsoft SQL Server Native Client 2012 components and SQL Server driver for PHP driver, and other issues. The paper has realized the online marking system of Uyghur proficiency test, which is developed by PHP, and installed under the Windows Server 2008, therefore increases the utilization of resources and stability of the system.
Key Words: PHP; SQL Server 2008; Uyghur character; online marking system
0 引言
在[1,2]中,研究了應(yīng)用PHP和SQL Server 2008開發(fā)維吾爾語考試閱卷系統(tǒng)的問題。[1,2]中的維吾爾語考試閱卷系統(tǒng)運(yùn)行環(huán)境為:一臺安裝Windows 7、SQL Server 2008和XAMPP的計算機(jī)。目前,一些考試系統(tǒng)和閱卷系統(tǒng)的服務(wù)器操作系統(tǒng)為Windows Server 2008,數(shù)據(jù)庫為SQL Server 2008。在Windows Server 2008下,應(yīng)用IIS 7.0替代XAMPP 中的Apache網(wǎng)頁服務(wù)器,可以將PHP開發(fā)的維吾爾語考試閱卷系統(tǒng)安裝在Windows Server 2008下,從而提高資源的利用率和系統(tǒng)的穩(wěn)定性。由于版本的問題,在Windows Server 2008下,安裝和加載微軟的PHP訪問SQL Server 2008的SQLSRV模塊過程中會遇到一些問題。經(jīng)過研究和探討,解決了這些問題。在Windows Server 2008下建立了PHP維吾爾語考試閱卷系統(tǒng)的平臺,實(shí)現(xiàn)了系統(tǒng)的集成和整合。
1 PHP訪問SQL Server數(shù)據(jù)庫處理維吾爾文的方法
在計算機(jī)中,維吾爾文字符通常采用Unicode編碼。維吾爾文126種不同的字體符號被分配到Unicode編碼中的阿拉伯字符基本區(qū),擴(kuò)展區(qū)A和擴(kuò)展區(qū)B[3]。UTF-8編碼(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼。在UTF-8編碼中,一部分被分配到阿拉伯字符基本區(qū)的維吾爾文字符,采用兩個字節(jié)編碼,其它被分配到阿拉伯字符擴(kuò)展區(qū)A和擴(kuò)展區(qū)B的維吾爾文字符,采用三個字節(jié)編碼。在SQL Server的數(shù)據(jù)庫表中,選擇可以存儲Unicode數(shù)據(jù)的nchar、nvarchar、ntext等字段類型,即可解決維吾爾文的存儲問題。在PHP中,常用的訪問SQL Server方式有odbc、mssql和adodb等。在[2]中,對PHP系統(tǒng)和代碼進(jìn)行適當(dāng)?shù)男薷暮蛿U(kuò)展后,應(yīng)用sqlsrv、adodb訪問SQL Server方式可以支持UTF-8字符集,從而解決了PHP訪問SQL Server數(shù)據(jù)庫中維吾爾文數(shù)據(jù)的問題。因此,在Windows Server 2008下建立PHP維吾爾語考試閱卷系統(tǒng)的平臺,要安裝和配置Web服務(wù)器(IIS)角色,應(yīng)用FastCGI服務(wù)支持PHP,還要安裝微軟發(fā)布的SQL Server Native Client 2012組件和SQL Server Driver for PHP驅(qū)動程序,解決在PHP中應(yīng)用sqlsrv、adodb訪問SQL Server 2008數(shù)據(jù)庫的問題。
2 PHP訪問SQL Server數(shù)據(jù)庫的驅(qū)動程序和模塊
從PHP 5.3版本開始,PHP不再提供php_mssql模塊。訪問SQL Server數(shù)據(jù)庫,需要利用微軟發(fā)布的驅(qū)動程序SQL Server Driver for PHP[4,5]。由于模塊名和函數(shù)名中都冠有“sqlsrv”字符,SQL Server Driver for PHP驅(qū)動程序又稱為SQLSRV。
微軟發(fā)布的SQL Server Driver for PHP驅(qū)動程序版本有2.0,3.0,3.1和3.2。2.0和3.0版支持PHP 5.3和5.4,3.1版支持PHP 5.4和5.5,3.2版支持PHP 5.4, 5.5和5.6。
在PHP加載SQL Server Driver for PHP模塊過程中,由于版本不兼容,會出現(xiàn)加載出錯的情況。因此,在安裝SQL Server Driver for PHP模塊時,要注意PHP和SQL Server Driver for PHP模塊版本之間的一致性。
在每個版本中,SQL Server Driver for PHP分別包含有Thread Safe和Non-Thread Safe的驅(qū)動程序模塊。例如,3.2版本中有12個驅(qū)動程序模塊,如表1所示。
在PHP Non-Thread Safe版本中有php5.dll文件,可加載非線程安全的SQLSRV驅(qū)動程序。在PHP Thread Safe版本中有php5ts.dll文件,可加載線程安全的SQLSRV驅(qū)動程序。要根據(jù)不同的PHP版本選擇不同的SQL Server Driver for PHP驅(qū)動程序模塊。
在Windows Server 2008和SQL Server 2008下,應(yīng)用微軟發(fā)布的驅(qū)動程序SQL Server Driver for PHP,需要安裝SQL Server Native Client 2011以上版本的sqlncli.msi。
SQL Server Native Client包含SQL OLE DB提供程序和SQL ODBC驅(qū)動程序。SQL Server Native Client 2011以上版本中包含下列組件,如表2所示。
4 安裝PHP訪問SQL Server2008數(shù)據(jù)庫的驅(qū)動程序和模塊
在PHP中,常用的訪問SQL Server方式有mssql、odbc和adodb等。在默認(rèn)情況下,這些訪問SQL Server方式不支持Unicode編碼,無法處理SQL Server中的維吾爾文[2]。安裝SQL Server Native Client組件和SQLSRV模塊,應(yīng)用sqlsrv訪問SQL Server方式可以支持UTF-8字符集。安裝SQL Server Native Client組件和ADODB包,并修改adodb5\drivers文件夾下adodb-mssqlnative.inc.php文件中的_connect()函數(shù),也可以支持UTF-8編碼[2]。因此,安裝相應(yīng)的組件,對PHP系統(tǒng)和代碼進(jìn)行適當(dāng)?shù)男薷暮蛿U(kuò)展,sqlsrv、adodb訪問SQL Server方式可以處理SQL Server 2008數(shù)據(jù)庫中的維吾爾文數(shù)據(jù)[2]。
4.1安裝SQL Server Native Client
在Windows Server 2008上安裝SQL Server Native Client 2012組件sqlncli.msi時,會出現(xiàn)“安裝此產(chǎn)品失敗,因?yàn)榇瞬僮飨到y(tǒng)不支持該產(chǎn)品?!钡膶υ捒?。解決這一問題的方法是從微軟網(wǎng)站下載和安裝Windows Server 2008 Service Pack 2補(bǔ)丁程序Windows6.0-KB948465-X86.exe。安裝Windows Server 2008 Service Pack 2后,可以安裝SQL Server Native Client組件。
4.2安裝SQLSRV模塊
如果采用sqlsrv訪問SQL Server 2008方式,需要根據(jù)PHP的版本選擇安裝相應(yīng)的微軟SQLSRV模塊。
例如,PHP版本為 Non-Thread Safe 5.4.45,則選擇SQL Server Driver for PHP 3.0中的php_sqlsrv_54_nts.dll,php_pdo_sqlsrv_54_nts.dll。將這兩個驅(qū)動程序復(fù)制到c:\php\ext文件夾下。在php.ini文件的Dynamic Extensions部分,增加:
extension=php_sqlsrv_54_nts.dll
extension=php_pdo_sqlsrv_54_nts.dll
在sqlsrv連接SQL Server數(shù)據(jù)庫的代碼中增加"CharacterSet"=>"utf-8"(表示SQL Server的字符集為UTF-8編碼) [2],可以訪問SQL Server數(shù)據(jù)庫中維吾爾文數(shù)據(jù)。如:
$coninfo=array("Database"=>$dbname,"UID"=>$dbuser,"PWD"=>$dbpass,"CharacterSet"=>"utf-8");
$conn=sqlsrv_connect($dbhost,$coninfo) or die ("連接失敗!");
4.3 安裝ADODB包
如果采用adodb訪問SQL Server 2008方式,則不需要安裝微軟的SQL Server Driver for PHP模塊,而需要從http://sourceforge.net/projects/adodb網(wǎng)站上下載和安裝ADODB包。將ADODB包解壓縮到網(wǎng)頁所在的文件夾下,并修改adodb5\drivers文件夾下adodb-mssqlnative.inc.php文件中的_connect()函數(shù),使之支持UTF-8編碼[2],也可以訪問SQL Server數(shù)據(jù)庫中維吾爾文數(shù)據(jù)。
5配置Windows Server 2008 IIS加載PHP
5.1 Windows Server 2008 IIS7.0 安裝與配置
在Windows Server 2008 的“初始配置任務(wù)”或“服務(wù)器管理器”窗口中,單擊“添加角色”,打開“添加角色向?qū)А贝翱赱7]。在“添加角色向?qū)А钡倪x擇服務(wù)器角色步驟中,選擇 “Web服務(wù)器(IIS)”角色。
在“選擇角色服務(wù)”的實(shí)現(xiàn)步驟中,選擇“CGI”服務(wù),其他的角色服務(wù)可根據(jù)需要選擇。
5.2 配置FastCGI加載PHP
在Windows IIS下加載PHP,通常有CGI、ISAPI和FastCGI等三種方式。
從5.3.0版以后,PHP不再支持ISAPI方式,采用FastCGI方式。應(yīng)用FastCGI方式加載PHP的安裝和配置方法為:
1)在Internet 信息服務(wù)(IIS)管理器的功能視圖中,單擊“處理程序映射”,打開處理程序映射頁面;
2)在處理程序映射頁面中,單擊“添加模塊映射…”,打開添加模塊映射對話框;
3)在如圖1所示的添加模塊映射對話框中,依次輸入:
6 結(jié)束語
在Windows Server 2008下,安裝PHP,加載微軟的SQL Server Native Client 2012組件和PHP訪問SQL Server 2008模塊SQLSRV,安裝和配置Web服務(wù)器(IIS)角色,應(yīng)用FastCGI服務(wù)支持PHP之后,可以將應(yīng)用PHP開發(fā)的維吾爾語考試閱卷系統(tǒng)安裝在Windows Server 2008下。
在Windows Server 2008下,應(yīng)用 IIS建立PHP維吾爾語考試閱卷系統(tǒng)的平臺,可以實(shí)現(xiàn)系統(tǒng)的集成和整合,提高資源的利用率和系統(tǒng)的穩(wěn)定性。
參考文獻(xiàn):
[1] 賈志先.維吾爾語口試閱卷系統(tǒng)開發(fā)中若干問題的研究[J].智能計算機(jī)與應(yīng)用,2015,5(4):30-32.
[2] 賈志先.PHP與SQLServer處理維吾爾文的方法研究[J].智能計算機(jī)與應(yīng)用,2015,5(5):26-28.
[3] 維尼拉·木沙江,艾爾肯·伊米爾.維吾爾文Unicode在線處理技術(shù)與實(shí)現(xiàn)[J].新疆大學(xué)學(xué)報(自然科學(xué)版), 2004,21(3):332-334.
[4] Microsoft. Microsoft Drivers for PHP for SQL Server [EB/OL]. [2015-5-1]. https://www.microsoft.com/en-us/download/details.aspx?id=20098.
[5] Tali Smith. Install the SQL Server Driver for PHP [EB/OL]. [2009-11-15]. http://www.iis.net/learn/application-frameworks/install-and-configure-php-on-iis/install-the-sql-server-driver-for-php..
[6] PHP Group. PHP for Windows [EB/OL]. [2008-9-1]. http://windows.php.net/download#php-7.0..
[7] PHP Group. Microsoft IIS 7.0 and later [EB/OL]. [2012-3-1]. http://php.net/manual/en/install.windows.iis7.php.