2016年8月3日 星期三

在IIS上安裝與設定PHP

開發環境主要是M$系列,因為測試的緣故,
需要使用其他人所提供的PHP程式,面臨三個選擇:
1、安裝Apache
      跟IIS會有相容性的問題,雖然網路上解法不少,因為熟悉度的關係,跳過。
2、把php改寫成asp,再掛載到iis上
      後續維護可能會有困擾,跳過。
3、直接在IIS上附掛php
      多年前曾經用過,雖然當時只是見習生路過的,就選這個方案好了。


參考了這篇【在在 IIS 上安裝與設定 PHP】 的說明,依序

1、下載PHP  (http://windows.php.net/download#php-5.6)  選擇的是5.6 X64 Thread Safe版本

2、將步驟1下載的zip檔解壓縮至C:\php

3、將c:\php\php.ini-production copy為php.ini並作下列修改 (有些設定原先為註解,拿掉;即可)
  • extension_dir = "ext"
  • cgi.force_redirect = 0
  • cgi.fix_pathinfo=1
  • fastcgi.impersonate = 1
  • 找到date區塊,date.timezone = "Asia/Taipei"
  • 找到Windows擴展區塊,開啟所需的相關dll (取消註解),例如: extension=php_mbstring.dll extension=php_mysql.dll .. ..

4、設定IIS
   
     (1)打開【處理常式對應】並新增PHP CGI模組
         要求路徑 = *.php
         模組         = FastCgiModule  (下拉選單)
         執行檔     = c:\php\php-cgi.exe
         名稱         = PHP via FastCGI     (為了省事直接依原作者的方式命名)

5、測試php可否正常執行
      在iis網頁目錄新增一個index.php,內容如下:
      <?php
            phpinfo();
        ?>    


後記,

原本是打算直接列出參考文章稍做記錄就好,在REVIEW時才發現,
可能手腦不協調吧~"~
一開始下載的版本(VC11 x86 Non Thread Safe (2016-Jul-21 19:18:58)),並不是我原先想下載的版本(VC11 x64 Thread Safe (2016-Jul-21 19:19:13)).........

甚至在抱著piece of cake的心態下快速設定完成後,直接把要測試的php程式搬到iis目錄下,咦.......這支在原作業環境運作良好的程式為什麼到我手上會水土不服!?
把程式碼註解掉之後,php確實可以檢視了,但....我不是只想顯示網頁文字啊,

原來,問題出在php的資源配置上,也就是在我設定的測試環境中(php.ini),有幾項該程式使用到資源未啟用,例如:
1、原先的作業環境允許使用<? ?>簡單的標識格式,但測試環境(php.ini)未開啟short_open_tag,所以要嘛是改php.ini,不然就把程式的<? ?> 改為<?php ?>。
2、Windows擴展區塊當中,只要程式有使用到的相關dll都要開啟 (extension=xxxxx.dll)。

詳細的php配置可以參考php.ini參數中文說明

方便日後追查,還是把重要步驟記下來好了。