Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 服務器技術 >> Web服務器 >> IIS 6.0 安裝PHP 5 的注意事項

IIS 6.0 安裝PHP 5 的注意事項

日期:2017/1/21 9:36:24      編輯:Web服務器

在 IIS 6.0 上安裝 PHP5 有一些安全性的議題與一些安裝技巧,而這些問題都是一般管理人員不容易發現的部分,所以若有人希望 PHP 5 在 IIS 上面執行時,可以參考一下這篇文章。
  ---
  如果你安裝 ISAPI Module for PHP5 ( php5isapi.dll ) 的話,在使用匿名存取的情況下,預設 PHP5 會以 匿名存取身份識別 ( IUSR_MachineName ) 身份執行。
  不過如果你安裝 FastCGI Extension for IIS6.0 並搭配 PHP5 執行的話,在使用匿名存取的情況下,卻是以 應用程式集區身份識別 ( NETWORK SERVICE ) 身份執行。
  這兩者的差別對於你設定網站目錄的 存取控制清單 (ACL) 非常重要,如果不小心設定錯誤,你的 PHP 程式就可以很輕易的建立目錄、寫入檔案到你的網站上。
  例如 PHP 若被發現什麽安全性漏洞,而你又來不及更新 PHP 版本,而網站目錄權限又沒有被正確設定的話,就會輕易的被植入木馬,這是件非常危險的事,不得不謹慎行事。
  ---
  另外,如果一台 IIS 上安裝多個不同的 PHP 網站時,也建議不要使用相同的身份識別進行站台設定,否則大家共用相同的權限,對網站安全性來說也是有風險的。
  ---
  我個人比較推薦使用 FastCGI 執行 PHP,除了比較穩定外,執行速度也會比較快。
  ---
  如果你希望所有 *.htm 的檔案也要執行 PHP 的話,自行定義 應用程式設定 中的應用程式副檔名對應
  以 FastCGI 的安裝為例,設定的步驟如下:
  新增一個 .htm 的對應值,並設定執行檔路徑為 C:\WINDOWS\system32\inetsrv\fcgiext.dll
  開啟 C:\windows\system32\inetsrv\fcgiext.ini 設定檔
  [Types]
  php=PHP-All
  htm=PHP-All備注:不需要重新啟動 IIS 就會生效了!
  ---
  如果需要透過 PHP 上傳檔案並使用 move_uploaded_file 函式時,若是 User 上傳「中文檔名」會導致檔案無法儲存的問題,若要解決這個問題必須要改寫程式才行。
  原本的程式:
  move_uploaded_file($file['tmp_name'],
  $dir . mb_basename($file['name']))修改後的程式:
  move_uploaded_file($file['tmp_name'],
  $dir . mb_basename(mb_convert_encoding($file['name'], "big5","utf8")))---
  PHP 5 安裝到 Windows 平台後,還會有「時區」的問題,原本在 Linux 平台執行時時區都很正常,也就是標准的台灣時區 GMT +0800,不過當移到 Windows 平台後會全部被重設成 GMT +0000 ( 格林威治標准時區 ),要解決這個問題必須在 WIndows 系統環境變數加入 TZ 變數,並指派變數值為 Asia/Taipei 即可,如下圖示:
  設定完成後,記得要執行 iisreset 指令才會生效喔!
  如果要查詢其他國家的時區變數值可以參考以下網址:http://www.theprojects.org/dev/zone.txt
  在Windows Server 2003/ IIS 6.x上安裝PHP 5.x時請閱讀以下文件. 讓它工作起來的過程真是很有挫敗感, 所以希望我的經歷可以讓其他人少走彎路.
  在根據網絡教程安裝PHP 5前(這裡有一篇很好的: http://www.peterguy.com/php/install_IIS6.html)
  請閱讀以下提示:
  這些是我找到的可以安全工作的權限設置:
  NTFS權限(右鍵單擊文件或文件夾, 選擇屬性, 打開安全頁)
  1) PHP安裝目錄 -> 你需要給NT用戶:'Network Service' 讀/運行 權限(如C:\PHP). 如果你在安裝目錄裡有一個 tmp 或 session 目錄, 你需要對這些目錄給'Network Service'用戶 讀/運行 和 寫 權限. *(你不需要對PHP安裝文件給匿名Internet用戶'IUSR_[name]'任何權限.
  2) 你需要對實際的WWW根目錄和網頁 .php文件(如果你想應用到全部站點)或每一個站點的根目錄和.php文件(如果是多個運行的站點)給匿名Internet用戶'IUSR_[name]' 讀/運行 權限
  3) 對於IIS6.0控制台, 如果站點屬性(右擊某獨立站點或網站根結點以應用到全部站點->選擇屬性) 在目錄安全頁->單擊編輯, 如果你希望站點可以被匿名訪問, 選中匿名訪問的多選框並輸入用戶名:'IUSER_[name]' (IUSER_[name]根據你的服務器的用戶設置而自定義)
  4) *最重要的*
  根據其他人提及的, 安裝和設置PHP.INI時, 先不要打開任何擴展EXTENSIONS. 原因是如果某一個擴展extension出錯, 錯誤提示框會彈出在遠程桌面之外, 你將不能關閉那個對話框, 而你的PHP頁面就會無限期掛起(出現這個問題後, 為了解決我幾乎要瘋了)
  然後在你成功打開測試PHP頁後, 再去把PHP.INI文件裡的擴展extensions一次全部打開.
  如果你有任何我沒有提及的技巧,請發郵件給我. 再次聲明, 我並不專業, 也在學習中.

Copyright © Windows教程網 All Rights Reserved