在Windows Server 2008 R2 x64上安裝WAMP服務

我在一台全新乾淨的Windows Server 2008 R2 x64 with Service Pace 1的伺服器上,要架設WAMP服務,一直碰壁,以下心得整理。

WAMP現在區分為x32與x64,如上所述,如果是新伺服器,必須先安裝對應版本的 Visual C++ 2008 可轉散發套件。

wamp x32 需安裝 [Microsoft Visual C++ 2008 可轉散發套件 (x86)]
wamp x64 需安裝 [Microsoft Visual C++ 2008 可轉散發套件 (x64)]

不安裝之後,當你要開啟 wampmanager 管理程式時,會一直出現錯誤,而無法啟用。

wampmanager.exe錯誤訊息:

記錄檔名稱:         Application
來源:            Application Error
日期:            2012/2/20 下午 03:07:10
事件識別碼:         1000
工作類別:          (100)
等級:            錯誤
關鍵字:           傳統
使用者:           不適用
電腦:            WIN08R2SP1
描述:
失敗的應用程式名稱: wampmanager.exe,版本: 1.6.1.33,時間戳記: 0x2a425e19
失敗的模組名稱: KERNELBASE.dll,版本: 6.1.7601.17651,時間戳記: 0x4e211319
例外狀況碼: 0x0eedfade
錯誤位移: 0x0000b9bc
失敗的處理程序識別碼: 0xbb0
失敗的應用程式開始時間: 0x01ccef9e43559d41
失敗的應用程式路徑: C:\wamp\wampmanager.exe
失敗的模組路徑: C:\Windows\syswow64\KERNELBASE.dll
報告識別碼: 811a009f-5b91-11e1-8bd8-08002701cd4a
事件 Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Application Error" />
    <EventID Qualifiers="0">1000</EventID>
    <Level>2</Level>
    <Task>100</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2012-02-20T07:07:10.000000000Z" />
    <EventRecordID>672</EventRecordID>
    <Channel>Application</Channel>
    <Computer>WIN08R2SP1</Computer>
    <Security />
  </System>
  <EventData>
    <Data>wampmanager.exe</Data>
    <Data>1.6.1.33</Data>
    <Data>2a425e19</Data>
    <Data>KERNELBASE.dll</Data>
    <Data>6.1.7601.17651</Data>
    <Data>4e211319</Data>
    <Data>0eedfade</Data>
    <Data>0000b9bc</Data>
    <Data>bb0</Data>
    <Data>01ccef9e43559d41</Data>
    <Data>C:\wamp\wampmanager.exe</Data>
    <Data>C:\Windows\syswow64\KERNELBASE.dll</Data>
    <Data>811a009f-5b91-11e1-8bd8-08002701cd4a</Data>
  </EventData>
</Event>

錯誤訊息二:

記錄檔名稱:         Application
來源:            SideBySide
日期:            2012/2/20 下午 03:07:10
事件識別碼:         33
工作類別:          無
等級:            錯誤
關鍵字:           傳統
使用者:           不適用
電腦:            WIN08R2SP1
描述:
"c:\wamp\bin\php\php5.3.9\php-win.exe" 的啟用內容產生失敗。 找不到依存組合 Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"。 請使用 sxstrace.exe 進行詳細的診斷。
事件 Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="SideBySide" />
    <EventID Qualifiers="49409">33</EventID>
    <Level>2</Level>
    <Task>0</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2012-02-20T07:07:10.000000000Z" />
    <EventRecordID>671</EventRecordID>
    <Channel>Application</Channel>
    <Computer>WIN08R2SP1</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"</Data>

    <Data>c:\wamp\bin\php\php5.3.9\php-win.exe</Data>

WampServer管理程式啟動後,你還會發現就算修改 httpd.conf 裡的 Port 設定,還是無法啟用 Apache!因為在Windows Server 2008 R2 x64上我有掛IIS 7 (使用 80 Port),奇怪的事,就算把IIS 7停用,把80 Port給Apache還是無法啟用。

我知道從Vista / Windows Server 2008之後版本開始,對於 C: 有一些權限上的管理與以前不同,我沒有細查文件,我的決解辦法是移除原安裝,重新安裝至非 C: 的路徑,例如,d:\wamp 立即見效。

如果要把PHP掛到IIS上執行,有二種選擇
  1. FastCGI
  2. ISAPI 
我選擇使用後者,在IIS裡設定相當簡單(注意,你在 IIS 的【角色服務』中,必有啟用【ISAPI 擴充功能】與【ISAPI 篩選器】),在【所在網站】或【虛擬目錄】裡有二個地方要設定,一在【處理常式對應】,二在【預設文件】。

處理常式對應 → 新增指令碼對應 →

  1. 要求路徑:*.php
  2. 執行檔:D:\wamp\bin\php\php5.3.9\php5isapi.dll (路徑自行參考,找 *isapi.dll 就對了)
  3. 名稱:PHP (隨便,方便辨識即可)

預設文件 → 新增 → 【 index.php 】 (一般PHP預設首頁文件檔案)

注意x32與x64混合環境

在上面最後一小段,你將PHP使用ISAPI方式掛到IIS上執行,不知道有沒有像我,碰到一堆的Error!後來驗證後證明是我自己搞不清楚狀況。@_@

我們這台x64伺服器上有一個網站是執行x32(ASP)應用程式,當我要把WAMP x64版本php5isapi.dll掛到IIS執行(ASP網站),不管怎麼試就是無法啟動index.php,會一直出現Error,試了好久,結果是:

  • 【WAMP x64 + Windows Server x64 + IIS (應用程式集區 - 啟用32位元應用程式)】(Bad)
  • 【WAMP x32 + Windows Server x64 + IIS (應用程式集區 - 啟用32位元應用程式)】(Bad)
  • 【WAMP x32 + Windows Server x64 + IIS】(Bad)
  • 【WAMP x64 + Windows Server x64 + IIS】(Good)

也就是說,在Windows Server 2008 R2 x64環境下,想要用ISAPI方法使用PHP只有一種方式,完全x64。【WAMP x64 + Windows Server x64 + IIS】就只有這樣的組合才有辦法讓ISAPI可以正常運作PHP。目前在【Windows Server x64 + IIS (應用程式集區 - 啟用32位元應用程式)】是無法透過ISAPI方式讓PHP正常運作。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。