1. 程式人生 > >【轉】在Windows上配置並整合PHP和MySQL經典教程

【轉】在Windows上配置並整合PHP和MySQL經典教程

在為使用者提供動態內容方面,PHPMySQL是一個強大的組合。這些年來,這兩項產品已經跨越了它們最初的應用舞臺,現在,一些世界上最繁忙的網站也在應用它們。雖然它們當初都是開源軟體,只能在UNIX/Linux上執行,但經過相當一段時期的發展,它們已能在Windows平臺上執行。

在本文中,我將逐步為你們說明如何在Windows環境中安裝並配置這些產品。對你們中的一些人來說,本文提供的資訊可能過於簡單,但本文旨在完成文章標題所提出的目標,提供逐步的指導。

這個特殊的軟體組合一般被稱作WIMP(Windows/IIS/MySQL/PHP),仿效Linux領域內的LAMP(Linux/Apache/MySQL/PHP)。

我的實驗室系統執行64位Windows Server 2003企業版。

第一步:在Windows Server 2003 R2系統上安裝Application Server角色

為說明這個例子,我將用IIS作為網路伺服器。你也可以選擇不需要IIS的PHP、MySQL和Apache組合,但在此例中我不會使用它們。

要在系統上安裝Application Server角色,點選“開始選單”,選擇“管理伺服器”。在管理伺服器主視窗中,點選“新增或刪除一個角色”選項。(A

圖A

把Application Server角色安裝到伺服器上,使它可以做網站的主機

Windows將在伺服器上搜索現有的角色,提供一個角色的完整列表以進行安裝。(

B

圖B

Application Server角色包括IIS和ASP.net

在伺服器角色的安裝過程中,系統可能要求你插入Windows Server光碟。所需的檔案在光碟1中。

安裝完成後,系統會更新管理伺服器視窗,以反映所新增的新角色。

第二步:下載PHP和MySQL

這時,伺服器已作好支援網頁的準備。但由於還沒有安裝PHP或MySQL,網頁還是靜態的。在安裝PHP和MySQL之前,必須從它們各自的網站下載其Windows版本。

MySQL

首先說明MySQL的安裝。到本文發表時止,MySQL 5.1還處於測試階段,5.0版本已在普遍應用。即使我要在64位的Windows上安裝MySQL,我還是要下載它的32位版本。畢竟,PHP也要安裝在同一臺伺服器上,而它在64位的硬體上還不大通用,這意味著還必須使用32位的IIS,所以沒有辦法完全實現64位。MySQL共有三個版本:精華版、完整版或不需要安裝版本。

  • 精華版:精華版是一個旨在滿足多數使用者需求的MSI安裝檔案。
  • 完整版:如你所期待的,完整版比精華版包含更多元件,包括一套評測工具。
  • 不需安裝版:這個版本與完整版一樣,但不包含配置嚮導或安裝器,必須手工進行安裝。

在本文中,安裝精華版即可。在這種情況下,我將下載的檔案命名為mysql-essential-5.0.24a-win32.msi,並儲存在桌面上。

PHP

為增加網頁的動態效果,特別是你希望從MySQL這樣的資料庫中提取資訊的時候,有必要使用PHP之類的語言。PHP有兩個不同的版本:4.x系列版本和5.x系列版本。如果你要用到舊網站中的指令碼,可能需要使用PHP 4.x系列版本,因為5.x系列版本進行了一些修改。由於我要建立一個全新的網站,所以我使用最新的版本。到本文發表時止,最新版本為5.1.6。

下載檔名為:php-5.1.6-Win32.zip

第三步:安裝MySQL

安裝過程相當簡單,但我為讀者提供安裝和配置過程的一屏一屏的指導。

MySQL安裝

安裝程式的第一個視窗很有代表性,要求您選擇希望執行的安裝型別。我希望進行典型安裝,它將MySQL安裝到C:/Program Files (x86)/MySQL/MySQL Server 5.0目錄下。在32位的系統中,目標目錄為C:/Program Files/MySQL/MySQL Server 5.0。(C

圖C

您希望執行哪種安裝?

我不對概要視窗進行說明。接下來的才是重要步驟。

MySQL配置

安裝完成後,立即會啟動MySQL配置嚮導,它問您一些問題,瞭解您準備如何應用伺服器。根據您的回答,MySQL配置嚮導建立資料庫伺服器的配置檔案,其中包含執行伺服器的調整引數。

配置過程的第一步是決定如何配置伺服器。您希望系統詢問您許多關於伺服器應用的問題;還是希望MySQL使用一個預定的配置檔案,然後您再手工操作呢?下面我們對這個例子進行詳細說明。(D

圖D

您希望進行詳細分析還是隻想使用一個預定的配置呢?

為給資料庫分配適當的RAM及其它資源,MySQL配置嚮導問您打算如何應用伺服器。(E)如果您的伺服器專用於資料庫工作,MySQL將使用盡可能多的RAM與其它資源。因為我的測試伺服器既是資料庫,又是網路伺服器,所以我選擇服務機器(Server Machine)。

圖E

您將使用哪一種伺服器?

另外,配置嚮導詢問另一個問題,這個問題有助於為您提供調整到最佳的系統以實現您的目標。在我的例子中,我選擇使用多功能資料庫選項(F),它適合常規使用。

圖F

您準備如何使用資料庫?

接下來系統請您定義InnoDB tablespace設定。我選擇使用預設設定。(G

圖G

選擇InnoDB配置選項

如下面H所示。接著我們來決定與MySQL資料庫建立多少併發連線。不要低估這個資料。如果連線用完了,訪問您的網站的其他使用者就不能訪問資料庫。但是,這個資料也不宜過大,因為別的資料庫連線也需要其它資源。必須建立一種平衡。

圖H

資料庫的連線數目是一個重要的資源考慮因素。

我們一般通過TCP/IP訪問MySQL資料庫。在預設情況下,MySQL使用3306埠進行通訊。您可以關閉TCP/IP或修改I中配置頁面上的埠號。在這個頁面上,您還可以選擇“啟用標準模式”(Enable Strict Mode),這樣MySQL就不會允許細小的語法錯誤。如果您還是個新手,我建議您取消標準模式以減少麻煩。但熟悉MySQL以後,儘量使用標準模式,因為它可以降低有害資料進入資料庫的可能性。

圖I

TCP/IP和標準模式配置設定。

下一個視窗我不做過多的說明。(J)既然我只使用英文,我選擇標準字符集。

圖J

選擇字符集。

在配置嚮導的下一個視窗中,系統詢問你是否希望將MySQL安裝為一項Windows服務,以及這項服務是否應隨伺服器一同啟動。另外,還要求你決定是否將MySQL命令新增到Windows路徑中。我做出明智選擇,讓MySQL服務隨作業系統一起啟動,並選擇修改系統路徑。(K

圖K

選擇環境選項。

網路伺服器和資料庫的安全也是重要的因素。同樣,你應該為資料庫伺服器設定一個安全的根密碼;如果不是完全必要,禁止遠端根訪問,並且不要建立匿名賬戶。(L

圖L

為資料庫伺服器提供一些安全偽裝。

安全設定是嚮導中的最後配置項。一旦設定完成,嚮導準備進行配置,將配置資訊寫入C:/Program Files [{x86}]/MySQL/MySQL Server 5.0/my.ini檔案中,然後啟動資料庫服務。

現在,你已經建立了一個執行正常的MySQL資料庫伺服器。現在我們轉向PHP。

第四步:安裝並配置PHP

這可能是整個過程中最難的部分。讓PHP與IIS 6協作有時是一種挑戰。下面我將進行完整的說明。

安裝PHP

第一個任務是從前面下載的壓縮檔案中安裝PHP。我一般將PHP安裝到C:/PHP5資料夾中。在系統中完成以下操作:

  • 在C盤上建立一個叫做PHP5的資料夾。
  • 將下載的檔案解壓到這個位置。Windows Server 2003 R2內建的解壓工具能夠順利完成這一任務。

不管你信不信,這就是PHP5的整個“安裝過程”。現在,進入更難的操作:配置PHP。

配置PHP

需要採取幾個步驟使PHP在 Windows下與IIS共同工作。

  • 在系統的路徑變數中增加C:/PHP5。(M)這樣,系統能夠更方便地定位它所需要的PHP DLL檔案。
    • 選擇開始並在我的電腦上右擊滑鼠。
    • 在出現的快捷選單中選擇屬性。
    • 在屬性視窗中選擇高階標籤。
    • 點選環境變數按鈕。
    • 在系統變數列表中雙擊路徑變數。
    • 在路徑變數的末尾增加“;C:/PHP”。(沒有引號!)
    • 重啟伺服器。

圖M

修改系統路徑以包含PHP目錄。

  • 將C:/PHP5/php.ini-dist檔案複製到C:/PHP5/php.ini,這是PHP的配置檔案。-dist版本只是一個樣本。
  • 現在,建立一個名為PHPRC的系統變數,並將它分配到php.ini檔案的路徑中。如果你選擇這樣做,而不是建立一個登錄檔項來完成同樣的任務,必須保證你的PHPRC變數只包含php.ini的路徑,而不是路徑和php.ini檔名。
  • 最後,為使PHP與MySQL共同工作,你必須對c:/php5/php.ini進行一些修改。
    • 用你最常用的文字編輯器開啟c:/php5/php.ini。
    • 找到extension_dir配置選項,保證這一行是:extension_dir = "./ext",它告訴PHP在哪找到其它要載入的模組。在應用MySQL和PHP時,你至少需要一個模組。
    • 找到";extension=php_mysql.dll"這一行,刪除前面的分號(;)。在php.ini檔案中,分號用來註釋配置行。在本例中,我希望反註釋載入PHP MySQL模組的行。
    • 在前面一行的正下方,新增:"extension=php_mysqli.dll"。這個模組啟用新版MySQL的其它一些功能。
  • 在命令提示符下輸入”iisreset”命令,重新載入帶新配置檔案的IIS和PHP。

配置IIS在32位模式下執行(僅用於64位Windows

正式的PHP Windows binaries還不能用於64位Windows構架上,但你還是可以在64位Windows上執行它。但要實現這一點,你必須在32位模擬模式下執行IIS 6。在你的Windows伺服器中執行以下操作:

  • 進入命令提示符。
  • 從命令提示符視窗轉入C:/Inetpub/Adminscripts資料夾。如果Windows安裝在C盤以外的磁碟上,使用相應的碟符。
  • Adminscripts資料夾中,輸入下列命令:cscript adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1,Enable32bitAppOnWin64的值1告訴Windows在32位模式下執行w3svc,而0值表示64位。
  • 輸入iisreset
  • 重啟伺服器。

配置IIS

PHP配置完成後,在你開始應用它之前,你還必須告訴IIS如何使用這項新服務。否則,試圖從IIS伺服器中將PHP檔案載入到網路瀏覽器只會得到錯誤的結果。

有兩種方法可在IIS中執行PHP——應用ISAPI,或以CGI副檔名的形式。由於應用ISAPI一般會得到較好的效能,在本文中我們應用此種方法。首先,我們將PHP ISAPI副檔名增加到IIS中。

  • 開始——管理工具——網際網路資訊服務(IIS)管理器。
  • 選擇伺服器名稱——網路服務副檔名。
  • 在右方框中,點選“增加一個新的網路服務副檔名…”選項。
  • 在結果視窗的“副檔名”中輸入“PHP ISAPI”。
  • 點選“新增”按鈕。
  • 瀏覽至C:/PHP5/php5isapi檔案。
  • 點選OK。
  • 選中“允許設定副檔名狀態”複選框。(N
  • 點選OK。

圖N

在C:/PHP5資料夾的php5isapi.dll檔案中指定新副檔名。

增加新的副檔名(.php)

  • 開始——管理工具——網際網路資訊服務(IIS)管理器。
  • 右擊網址,在出現的快捷選單中選擇屬性。
  • 在屬性視窗中,選擇“主目錄”標籤。
  • 點選“配置”按鈕。
  • 點選“新增”按鈕。
  • 在“新增/編輯應用副檔名對映”視窗中,點選執行欄旁的“瀏覽”按鈕並找到C:/PHP5/php5isapi.dll檔案。
  • 在副檔名輸入框中輸入“.php”。(O
  • 在動作(Verbs)標題下,選擇“僅限於”選項,在文字框中輸入“GET、POST、HEAD”.
  • 點選OK,返回IIS管理器主視窗。

圖O

PHP副檔名告訴IIS如何處理.php頁面請求。

同時,在IIS中,確保你設定了網站許可,以便執行指令碼:

  • 開始——管理工具——網際網路資訊服務(IIS)管理器。
  • 右擊網址,在出現的快捷選單中選擇屬性。
  • 在屬性視窗中,選擇“主目錄”標籤。
  • 在“應用設定”中,將“執行許可”選項改為“僅用於指令碼”。(P

圖P

在IIS中修改設定以執行指令碼。

最後,在IIS中,確保你添加了一個預設的PHP頁面,如index.php。這樣,使用者就不必為網路伺服器上的一個特定資料夾指定完整的路徑,以及PHP指令碼名。相反,如果使用者訪問一個目錄,其中含有一個名為index.php的檔案,ISS就會自動載入它。

  • 開始——管理工具——網際網路資訊服務(IIS)管理器。
  • 右擊網址,在出現的快捷選單中選擇屬性。
  • 在屬性視窗中,選擇“檔案”標籤。
  • 點選“新增”按鈕。
  • 在“新增內容頁面”視窗中輸入“index.php”。(Q
  • 點選OK。
  • 再點選OK。如果你得到一個子節點也受到影響的資訊,點選OK。

圖Q

如果它上面沒有頁面存在,就載入目錄頁面。

測試PHP

現在對PHP進行測試,保證它能夠應用IIS實現動態頁面。

  • 在IIS網路根目錄下(一般為C:/Inetpub/wwwroot)建立一個名為phpinfo.php的檔案。
  • 在這個檔案中,貼上一行文字:<? phpinfo(); ?>。這實際是一段完整的PHP指令碼,用來輸出基於PHP的網路伺服器的全部配置。
  • 現在,在任務機器上訪問http://{your server}/phpinfo.php,或從伺服器上訪問http://127.0.0.1/phpinfo.php
  • 如果出現錯誤,說明配置有錯誤。
  • 你應該會得到類似於下圖的視窗。(R
  • 確保在MySQL的phpinfo中有一個板塊。如果沒有,返回並保證你正確修改了php.ini檔案,使它載入MySQL模組。

圖R

PHP測試頁面中包含一個完整的PHP配置概要。

第五步:測試MySQL網路連線

在檢測安裝是否成功,你需要一個樣本資料庫再次進行測試。在本文中,我將使用MySQL命令列工具建立一個小型樣本資料庫,它的唯一目的在於保證PHP/MySQL連線正常。

要建立這個樣本資料庫:

1. 首先要建立一個真正的資料庫。通過以下命令實現:
mysqladmin -uroot –p******* create sample
注意:如果這裡出現錯誤,確保密碼正確(-u引數指定使用者名稱,-p引數是你在MySQL
配置階段分配的密碼。)

2. 現在,繼續建立表格並新增一些資料。另外,從命令列中執行下列命令:

  • C:>mysql -uroot -p******* sample
    這時用前面使用的相同密碼替代*。剩下的步驟在MySQL命令介面中完成。
  • 在MySQL提示符下,輸入
    CREATE TABLE sample_table ( FirstName varchar(30), MiddleName varchar(30), LastName varchar(30) ); mysql> INSERT into sample_table Values ( "Scott", "David", "Lowe") ; mysql> INSERT into sample_table Values ( "Ralph", "John", "Malph") ;
  • 注意:上面步驟中的分號極為重要。
  • 從網路伺服器利用根使用者賬號訪問資料庫是一個主要的安全威脅。所以,你應該為這一目的建立一個單獨的賬號。在MySQL介面中輸入下列命令:
    GRANT ALL ON sample.* to Webuser@localhost identified by 'password';
  • 輸入“離開”(quit)退出MySQL介面。

接下來,你需要網路伺服器下的一個PHP指令碼,它能夠閱讀這個新資料庫的內容。如果成功做到這一點,你就擁有了一個運轉正常的IIS/PHP/MySQL系統。

  • 在網路根目錄下(一般為C:/inetpub/wwwroot),建立一個名為dbtest.php的檔案。
  • 在這個檔案中,貼上下面的PHP程式碼:

<?

$Username = "Webuser";

$Password = "password";

$Database = "sample";

$Hostname = "localhost";

$MySQLConnection = mysql_connect($Hostname, $Username, $Password) or die("Unable to connect to MySQL Database!!");

$MySQLSelectedDB = mysql_select_db($Database, $MySQLConnection) or die("Could not Set the Database!!");

$MySQLRecordSet = mysql_query("SELECT * FROM sample_table");

print "First Name-" . "Middle Name-" . "Last Name<br>";

while ($MyRow = mysql_fetch_array($MySQLRecordSet, MYSQL_ASSOC))

{

print $MyRow['FirstName'] . "-" . $MyRow['MiddleName'] . "-" . $MyRow['LastName'] . "<br>";

}

mysql_close($MySQLConnection);

? >

儲存這個檔案,然後使網路瀏覽器指向http://{yourserver}/dbtest.php,你將得到類似於下S的視窗。

圖S

如果你看到這三個人名,說明你的配置取得成功。

更好的主意

我從未說安裝與配置過程很簡單。但是,如果你遵循這些步驟,在較短的時間內你就可以建立一個正常的MySQL/PHP系統。如果你有使這一過程更為簡化的說明或建議,我非常樂於接受。如果我收到足夠好的建議,我將在另一篇文章中發表。