如何在 IIS 建立 PHP 程式檔案

不論是自行手動安裝、設定,抑或利用方便簡易的 Microsoft Web Platform Installer,建置完成 IIS 的PHP執行環境之後,就可以開始試著建立 PHP 程式檔案;本文除了說明如何在 IIS 建立 PHP 程式檔案,也會說明一些 PHP 在 IIS 環境的相關設定。

在預設環境建立 PHP 程式檔案

一經安裝,IIS 就有其預設的網站,而在安裝、設定了 PHP 執行環境之後,可以直接將 PHP 程式放在預設的位置來執行。.IIS 預設的網站名稱是『Default Web Site』,其預設的實體路徑是C:\inetpub\wwwroot,但不論如何,都可以利用 IIS 管理員來找出這些設定值。

1.開啟 IIS 管理員,然後先從左側樹狀找到『站台』節點,此節點下的第 1 層是 IIS 的網站(名稱左側的圖示是向地球的藍色小圓點)。如果未曾在 IIS 建立網站,也會有名為『Default Web Site』的預設網站。

點擊放大

2.以滑鼠點選左側樹狀的『Default Web Site』(或其他您想將 PHP 相關檔案放置其中加以執行的網站),再點選右側『動作』窗格裡的『基本設定』,會出現『編輯站台』交談窗(如下圖),其中『實體路徑』文字方塊的內容即為此網站的實體路徑(它是以環境變數表示),請複製文字方塊裡的內容。

3.開啟檔案總管,將上述的複製貼到檔案總管的位址列,並按下 Enter 按鍵,檔案總管就會前往這個實體路徑所在的目錄,並列出目錄裡的所有內容。

4.接著可以在此目錄建立簡單的 PHP 程式來測試;我們建一個名為 hello.php 的檔案,其內容為 <?php echo 'Hello, This is PHP On Windows!'; ?>。然後再以瀏覽器瀏覽這個網站,如果一切正確,就會得到如下的執行結果。

點擊放大

新建 PHP 虛擬目錄

有時候您會需要將 PHP 程式及相關檔案放在其他的目錄,尤其是需要賦予不同於原本網站或虛擬目錄的讀寫權限,可以先在其他地方建立資料夾,然後根據需求將讀寫權限指定給使用者或群組(通常會利用 IIS_IUSRS),最後再利用 IIS 管理員新增虛擬目錄,並將新建資料夾的路徑對映到新增的虛擬目錄。實際的作法請參考以下的說明。

1.開啟檔案總管;如果虛擬目錄對映的實體資料夾還未建立,請先建立資料夾。

2.接著要指定 IIS_IUSRS 群組對此資料夾的讀寫權限。請先以滑鼠右鈕按下該資料夾(此例為 phpDev,名稱不分大小寫),並選取『內容』,然後在出現的內容交談窗點選『安全性』標籤(如下圖)。

3.按下內容交談窗的『編輯』鈕,這會出現修改資料夾權限的交談窗(如下圖)。

4.按下交談窗的『新增』鈕,會出現『選取使用者或群組』交談窗(如下圖)。

5.在『輸入物件名稱來選取』輸入 IIS_IUSRS,並按『確定』鈕。

6.權限交談窗的『群組或使用者名稱』會多出『IIS_IUSRS』群組(如下圖)。

7.您可視情況調整 IIS_IUSRS 群組對此資料夾的讀寫權限,完成之後請分別按下權限交談窗和內容交談窗的『確定』鈕。通常我們會接受指定給『IIS_IUSRS』群組的預設權限,也就是允許讀取和執行、列出資料夾內容、讀取,而不應該讓 IIS_USRS 或任何能執行 PHP 應用程式的帳號擁有寫入或完全控制的權限。但有時候如果 PHP 應用程式的確需要寫入檔案而又必須擁有寫入權限時,可以只讓使用者或群組擁有寫入相關檔案或子資料夾的權限。

點擊放大

8.接著再以 IIS 管理員建立虛擬目錄。請開啟 IIS 管理員,然後先從左側樹狀找到欲新增 PHP 虛擬目錄的網站,再以滑鼠右鈕按下網站名稱(此例為預設的『Default Web Site』),最後選取『新增虛擬目錄』,這會出現『新增虛擬目錄』交談窗(如下圖)。

9.在『新增虛擬目錄』交談窗輸入『別名』(此例為 phpDev;別名並不分大小寫),並指定適當的『實體路徑』(此例為 C:\phpDev,亦即放置此虛擬目錄相關檔案的實際目錄)。

10.完成後請按『新增虛擬目錄』交談窗的『確定』按鈕。

11.完成上述新建,接著要測試虛擬目錄的運作。首先在虛擬目錄的實體路徑(此例為 C:\phpDev)新建測試用的 PHP 檔案,檔名為 test.php,內容為 <?php phpinfo(); ?>。

12.在本機或遠端以瀏覽器連接上述新建 PHP 虛擬目錄的電腦,連接的方式可以用 IP 位址、電腦名稱、網域名稱,重要的是,不論使用哪一種,都必須再指定虛擬目錄別名及 PHP 測試檔案名稱:<IP位址、電腦名稱、網域名稱 >\phpdev\test.php(下圖結果是使用電腦名稱)。若一切正確,會得到如下的畫面(這個測試檔案是呼叫 PHP 函式 phpinfo()),這也表示這裡新建的 PHP 虛擬目錄已經能正常運作。

點擊放大

新建PHP網站

您也可以用整個網站來建置 PHP 應用程式,不過這需要額外的 IP 位址、網域名稱,或者讓新建的網站使用其他的通訊埠。

1.開啟 IIS 管理員,然後先從左側樹狀找到『站台』節點,再以滑鼠右鈕按下此節點,並選取『新增網站』,這會出現『新增網站』交談窗(如下圖)。

2.請根據您的情況輸入『站台名稱』、『實體路徑』,並且在『繫結』指定其他的連接埠、IP 位址,或者是主機名稱。最後按下『新增網站』交談窗的『確定』按鈕。

3.完成設定之後,同樣的也以簡單 PHP 程式作為測試。您可以任選前述簡單的 PHP 程式,並放置在您所指定的實體路徑,只要一切正確(包括相關的網路設定),即可得到如前述的執行結果。

額外的設定

本文的這個部分將說明 PHP 在 IIS 環境的若干相關設定。

啟用 PHP 擴充套件

PHP 的擴充套件預設放置在安裝目錄下的 extensions 或 ext 子目錄,只要在 php.ini 設定得宜,就能讓 PHP 取用擴充套件提供的功能。

1.開啟檔案總管,並瀏覽 PHP 的安裝目錄(本例為 C:\PHP)。

2.接著要指定擴充套件的位置(預設應已指定,但您應檢查是否正確)。以文字編輯器開啟此目錄的 PHP 組態檔,也就是 php.ini,然後找出檔案裡的 extension_dir,並將 extensions 或 ext 目錄的路徑指定給 extension_dir;例如:

extension_dir = "C:\PHP\ext"

3.然後依照需要,在 php.ini 的 Dynamic Extensions 區段利用 extension 指定個別的擴充套件,就會讓啟動 PHP 環境時,載入這裡所指定的擴充套件;例如以下指定微軟所開發的 Microsoft SQL Server Driver for PHP,讓 PHP 程式能夠存取 Microsoft SQL Server:

extension=php_sqlsrv.dll

4.儲存 php.ini,並重啟 IIS(可利用 IIS 管理員或命令程式 IISRESET,如下圖)讓變更生效(您可利用 PHP 的 phpinfo 函式或 extension_loaded 函式檢測目前載入的擴充套件)。

點擊放大

指定 PHP 工作階段狀態檔案的位置

PHP 已經內建工作階段狀態(session state)的能力,並且是以檔案加以儲存,為了方便管理,我們可以另行指定存放這些檔案的位置。也因為使用者會將工作階段狀態寫入檔案,因此我們要加入額外的權限。詳請請參考以下的說明。

1.在 PHP 安裝目錄新建名為 session 的子目錄。

2.以滑鼠右鈕按下 session 目錄並選取『內容』,再依序點按『安全性』標籤及『編輯』按鈕,再按下『session 的權限』交談窗的『新增』按鈕。

3.在『輸入物件名稱來選取』輸入 IIS_IUSRS,並按『確定』鈕。

4.選取『session 的權限』交談窗裡剛新增的 IIS_IUSRS 群組,然後點選『修改』權限的核取方塊(如下圖),並按『確定』按鈕關閉『session 的權限』交談窗及 session 內容交談窗。

5.開啟 PHP 安裝目錄裡的 php.ini,找出 session.save_path 設定(如果該行開頭有分號,請刪除它),並將其值改成剛才新建的 session 子目錄路徑;例如:

session.save_path = "C:\php\session"

6.儲存 php.ini,並重啟 IIS(可利用 IIS 管理員或命令程式 IISRESET)讓變更生效。

指定檔案上傳的臨時目錄

PHP 預設已經開啟 HTTP 檔案上傳的功能,以及存放檔案上傳的臨時目錄,為了方便管理,我們可以另行指定存放這些檔案的位置。也因為使用者必須寫入檔案,因此我們要加入額外的權限。詳請請參考以下的說明。

1.在 PHP 安裝目錄新建名為 upload 的子目錄。

2.以滑鼠右鈕按下 upload 目錄並選取『內容』,再依序點按『安全性』標籤及『編輯』按鈕,再按下『upload 的權限』交談窗的『新增』按鈕。

3.在『輸入物件名稱來選取』輸入 IIS_IUSRS,並按『確定』鈕。

4.選取『upload 的權限』交談窗裡剛新增的 IIS_IUSRS 群組,然後點選『修改』權限的核取方塊(如下圖),並按『確定』按鈕關閉『upload 的權限』交談窗及 upload 內容交談窗。

5.開啟 PHP 安裝目錄裡的 php.ini,找出 file_uploads 和 upload_tmp_dir 設定(如果該行開頭有分號,請刪除它),file_uploads 預設應該已經是 on,因此請將 upload_tmp_dir 設為剛才新建的 upload 子目錄路徑;例如:

File_uploads = On 
Upload_tmp_dir = "C:\php\upload"

6.要注意的是,php.ini 裡面可能有兩個 Upload_tmp_dir 設定,而後面那個的預設值可能如下,請在該行開頭加上分號,也就是使該行成為註解。

upload_tmp_dir="C:\Windows\Temp"

7.儲存 php.ini,並重啟 IIS(可利用IIS管理員或命令程式 IISRESET)讓變更生效(提醒您,要利用 PHP 達到檔案上傳的功能,還必須編寫 HTML 及 PHP 程式;以上只是指定相關設定)。

總結

要在 IIS 執行 PHP 並不困難,而且也行之多年了;之前為了效能的考量,會以 ISAPI 的形式執行 IIS 環境裡的 PHP 解譯器,現在因為 IIS 大幅提升了 CGI/FastCGI 的支援,因此也改以 CGI/FastCGI 的形式執行。

如果您原本就熟悉 IIS 7,PHP 在 IIS 的相關觀念或管理設定,應該與您所認知的大多相同。本文除了詳述如何在 IIS 建立 PHP 程式檔案,也說明了 PHP 在 IIS 環境的一些相關設定。

參考資料:PHP on Windows Training Kit

arrow
arrow
    全站熱搜

    英國旅遊民宿推薦 發表在 痞客邦 留言(0) 人氣()