win7 x64 IIS PHP


第二次安裝server
這一次記錄在這裡, 才不會忘了.
使用了資料從謙言謙語blog,  第二個網站資料



2013年3月2日 星期六


在 IIS 上安裝與設定 PHP

一般我們開發 PHP,都是在所謂的 LAMP(Linux Apache MySQL PHP)的環境下執行,但是有時候為了方便,像我習慣本機有一個微軟的伺服器環境提供測試,這時候同時安裝兩套網頁伺服器或者資料庫有時候會比較亂,管理上也不方便,此外 IIS 圖形化介面的操作,對於初學者來說確實是比較容易學習的。

關於 IIS 的安裝與設定,請先參考先前寫的文章:

建置 ASP.NET 網頁伺服器 - 使用 IIS
http://shaocian.blogspot.tw/2013/03/aspnet-iis7.html

設定好 IIS 後,就開始來安裝 PHP,讓我們的 IIS 可以同時支援 ASP.NET 以及 PHP。

1.下載 PHP
http://php.net/downloads.php

Windows 底下使用的 PHP,必須下載 Windows 5.4.12 binaries and source 版本
(筆者撰寫此文時,最新版本是 5.4.12,請依照您當時的情況為主)

http://windows.php.net/download/#php-5.4

進入頁面後,又有兩種版本可以選擇:

  • VC9 x86 Non Thread Safe
  • VC9 x86 Thread Safe
基本上官方也不建議在正是產品上使用 Non Thread Safe 的版本,穩定性考量上,因此我們是選擇 Thread Safe 的版本。

P.S 目前給 Windows 使用的 PHP 官方版本只有提供 32 位元。

筆者習慣採用手動安裝(可以了解程式部屬的架構),而不去使用官網提供的安裝程式,所以我們下載 zip 壓縮檔的版本。

將所有檔案解壓縮到 C:\php 目錄底下


在 PHP5.3 以前,官方建議 IIS 使用 ISAPI 的方式來配置 PHP,不過之後就改使用 FastCGI 的方式,不用再手動複製檔案到 Windows 系統資料夾內了。

筆者下載5.4版本中,有兩個設定的安裝範例檔案,php.ini-development 以及 php.ini-production,穩定性上的考量,我們就使用 php.ini-production 這個設定範例,複製一份,將檔名改為 php.ini。

2.修改 php.ini 設定
extension_dir = "ext"
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_curl.dll
date.timezone = "Asia/Taipei"
(原本有註解的請拿掉分號「;」)
    為了能使IIS使用php資料夾的檔案,我們必須加入php資料夾修改與寫入的權限給IIS的帳號,請在C:\底下的php資料夾上按右鍵->內容->安全性,點選編輯,再選擇中間的新增,如下圖所示:
    加入IIS_IUSRSNETWORK SERVICE兩個帳號,並給予這兩個帳號修改及寫入的權限(點選修改後寫入應該也會跟著被選取),如下圖所示:


3.設定 IIS
開啟「Internet Information Services (IIS) 管理員」
右側「動作」區塊中點選「新增模組對應」
果沒有FastCgiModule選項,請至"控制台->程式和功能->開啟或關閉Windows功能",勾選"Internet Information Services->World Wide Web 服務->應用程式開發功能->CGI"選項。
照著以上圖例輸入,在「執行檔」選擇檔案的時候,記得將附檔名的部分選擇「*.exe」

將 PHP 加入 FastCGI 集合,點「是」
由於 IIS 預設是沒有偵測 php 副檔名文件的功能,因此為了方便,我們通常會新增一個預設文件 index.php,讓 IIS 自動識別該檔名代表首頁。

預設文件
點選右鍵「新增」

輸入 index.php

4.測試 PHP 文件執行
我們在 IIS 網頁目錄(以本站的範例來說是 D:\WebSites)底下新增一個 index.php 文件
內容如下:

<?php
    phpinfo();
?>

然後打開瀏覽器,輸入 http://localhost,如果可以順利看到如以下測試頁面,代表我們剛才設定的預設文件以及 PHP 執行上是沒問題的!


P.S 建議測試完畢後,將該文件刪除,因為 phpinfo() 顯示了非常多伺服器相關的資訊,不應該開放給外部的人看到。
左側站台的地方點選 Default Web Site,然後點選「處理常式對應」。








簽核模組

以下是,藍色小舖文章的訊息,
簽核模組

由於要幫公司開發出差勤系統, 而每一張單據都需有各簽核人員, 如 
申請人 > 課長 > 副理等等, google了一下大神, 發現開發時, 應是將單據搭配"簽核模組", 
A1
=================
table schema

單據編號(varchar)
課長 (bit)
副理 (bit)
.
.
==================
只要課長簽核過狀態為true(預設是false),以下以此類推,另一個table就去紀錄,簽核時間和人(員工編號)
我這邊會用單據編號做主key

A2
小喵做的話

首先會有組織的資料結構,會是樹狀結構,知道誰的上面是誰
使用者代號, 使用者長官代號
topcat, topcatB1
topcatB1, topcatB2
topcatB2, topcatB3

然後會有個表單簽核層級設定,不同的表單要簽核幾層可能是不同的
表單類別,簽核層級
A,3

再來就是簽核的時候,進行記錄
表單編號,表單類別,層級,簽核者
A000001,A,1,topcat
A000001,A,2,topcatB1
A000001,A,3,topcatB2

大概是這樣的概念去走,這是簡單的

跨部門簽核,設定會更複雜
簽核還要考慮代簽(長官休假、離職...etc.)、多人複籤(同一階層).. balabala..
真的搞起來也是很雜繁的

C1 列出相關員工或長官,讓使用者自己選擇要送給誰簽核。
如果是一時性的,當然如同C1的大絕招就可以了

但是如果是常態性的簽核
以假單來看
同樣職等的,有的只有簽到課長(往上一層)
有的卻簽到處長(往上三層)
這樣不是怪怪的