PHP 如何排序二維陣列 [第1維:陣列,第2維:關聯式陣列]

已經好久沒寫 PHP 了,今天為了維護一個五年前開發的案子,客戶要求將一個畫面的資料進行排序,但這種二維陣列(第一層一般陣列第二層關聯式陣列)的排序之前好像沒做過(有做過也該忘了),想了一些時間終於寫出來,特別寫起來備忘一下。

首先,我原始的二維陣列用 print_r 印出來的內容如下:

Array
(
[0] => Array
(
[0] => 11111
[inventory] => 11111
[1] => 222222
[id] => 222222
[2] => LE000
[type_id] => LE000
)

[1] => Array
(
[0] => 12
[inventory] => 12
[1] => 232
[id] => 232
[2] => TK000
[type_id] => TK000
)

[2] => Array
(
[0] => 40
[inventory] => 40
[1] => 123
[id] => 123
[2] => LE001
[type_id] => LE001
)

[3] => Array
(
[0] => 5
[inventory] => 5
[1] => 331
[id] => 331
[2] => TK002
[type_id] => TK002
)

[4] => Array
(
[0] => 5
[inventory] => 5
[1] => 23
[id] => 23
[2] => LE055
[type_id] => LE055
)

[5] => Array
(
[0] => 21
[inventory] => 21
[1] => 312
[id] => 312
[2] => LE067
[type_id] => LE067
)
)

由此可見我的第一維陣列只是 一般陣列,第二維陣列是 關聯式陣列(Associated Array),而排序的需求是依據第二為陣列的 type_id 的值進行排序。

我到 Sorting Arrays 查到一個 uasort 似乎蠻適合我這個排序需求的,因此寫了一個簡單的比對函式進行陣列排序,程式碼如下:

function sort_by_type_id($a, $b)
{
if($a['type_id'] == $b['type_id']) return 0;
return ($a['type_id'] > $b['type_id']) ? 1 : -1;
}

如果我的陣列名稱為 $data 的話,套用排序的語法如下:

uasort($data, 'sort_by_type_id');

然而,排序好之後的結果雖然第一維陣列的「排列順序」改變了,但是 index 卻沒變!這是因為 PHP 把我的陣列視為關聯式陣列來看待,並不像一般程式語言的陣列有按照陣列的索引子進行排列,由此可見我真的很久沒寫 PHP 了  :-P

排序後的結果如下:

Array
(
[0] => Array
(
[0] => 11111
[inventory] => 11111
[1] => 222222
[id] => 222222
[2] => LE000
[type_id] => LE000
)

[2] => Array
(
[0] => 40
[inventory] => 40
[1] => 123
[id] => 123
[2] => LE001
[type_id] => LE001
)

[4] => Array
(
[0] => 5
[inventory] => 5
[1] => 23
[id] => 23
[2] => LE055
[type_id] => LE055
)

[5] => Array
(
[0] => 21
[inventory] => 21
[1] => 312
[id] => 312
[2] => LE067
[type_id] => LE067
)

[1] => Array
(
[0] => 12
[inventory] => 12
[1] => 232
[id] => 232
[2] => TK000
[type_id] => TK000
)

[3] => Array
(
[0] => 5
[inventory] => 5
[1] => 331
[id] => 331
[2] => TK002
[type_id] => TK002
)
)

這種狀況造成我在 Smarty Template 中的迴圈依然以尚未排序前的順序顯示內容。

最後,我轉個小彎,利用 array_values 函式僅取回第一維陣列的 value 部分,所取得的新陣列的索引子就是按照我要的順序排列了!

$data = array_values($data);

最後,得到大澤木小白鐵的訂正,原來只要用 usort 就可以解決這個問題,不需要再用 array_values 函式僅取回第一維陣列的 value 部分,這才是正解! ^_^

usort($data, 'sort_by_type_id');

 

相關連結

  

此文章由 will 發表於 2009/11/24 下午 11:42:13

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: PHP

標籤: , ,

收藏:

利用 Web PI 安裝 PHP5 與 SQL Server Driver for PHP 心得

我今天替客戶在 Windows 主機上 ( IIS6 ) 安裝 PHP 5SQL Server Driver for PHP,我基本上是利用 Microsoft Web Platform Installer 2.0 ( Web PI ) 安裝的,安裝過程可謂十分順利,所以說 Web PI 真的是佛心來的產品,替 IT 人員解決了不少安裝部署方面的困擾,不過 PHP 網站在執行的時候卻沒有十分順利,以下是今天的心得筆記。

安裝的過程記錄如下

1. 安裝 Microsoft Web Platform Installer 2.0

2. 透過 Microsoft Web Platform Installer 2.0 安裝以下模組

  • 適用 IIS 6.0 和 IIS 5.1 的 FastCGI 1.0 (英文)
  • PHP 5.2.9-2 (英文)
  • Microsoft SQL Server Driver for PHP 1.0 (英文)

3. 安裝 SQL Server Driver for PHP 1.0 Cumulative Update - April 2009  ( 因為 Web PI 安裝的版本較舊 )

4. 設定 C:\Program Files\PHP\php.ini 設定檔

extension=php_sqlsrv_ts.dll

5. 新增站台或虛擬目錄,並設定 .php應用程式副檔名對應

image

6. 將站台設定的應用程式集區回收,或是利用 工作管理員Process Explorer 將 w3wp.exe  程序停止 ( Kill Process ) 即可重新載入所有設定。

 

額外發現

在預設的情況下,利用 Web PI 安裝好 PHP 5 之後,當 PHP 程式出錯在頁面上是看不到錯誤的,預設所有的錯誤都會被儲存到 C:\WINDOWS\temp\php-errors.log 中!

 

相關連結

  

此文章由 will 發表於 2009/10/21 下午 08:52:48

永久連結 | 評論 (1) | 此文章的RSSRSS comment feed |

分類: PHP | IIS | 系統管理 | SQL Server

標籤: , , , , ,

收藏:

機會教育:從中華民國總統府網站被發現 XSS 漏洞講起 (2)

今天才正苦惱不知道要寫什麼文章才好,想不到就有位仁兄寫了篇文章專章批判我的 [機會教育:從中華民國總統府網站被發現 XSS 漏洞講起] 文章寫的不夠專業且混淆視聽。我之前就說了這是場「機會教育」,所以我決定另寫一篇文章專門用來回覆此人的種種觀點以及謬誤之處,歡迎各位批評指教,這是場對專業技術的辯論,不涉及人身攻擊,對於該文章所用的情緒性字眼我將不予理會。

批判一:自打嘴巴

批判一:自打嘴巴

回應:

  • Tag Injection 是一種攻擊手法,並非可插入 <script> 才叫做 Tag Injection,只要可以被插入 Tag 都算是 Tag Injection 的攻擊範圍。
  • 這種不用入侵資料庫就可以達到 XSS 的弱點,「危險的程度」因人而異,我做個簡單的假設,我們以總統府方的立場來看,如果網站被利用來當作攻擊其他網站的跳版,還罪證確鑿的被媒體抓到的話,我看搞不好有人要下台,對要下台的那個人來說應該算「嚴重」吧。

批判二:危言聳聽

批判二:危言聳聽

回應:

  • 此次算不算「偽XSS」見仁見智,在我眼裡這件事沒有什麼偽不偽的,XSS 就是 XSS!
  • 這次的確是「純粹屬於網友自High的行為」而且「XSS碼的確未進到系統的資料庫」。
  • 但是「何來有連上去點擊新聞時可能會連到惡意網站之說」,這是邏輯問題,我都能夠插入任意標籤了,還有什麼做不到?
  • Clickjacking 正是利用 Tag Injection 的弱點進行攻擊,只要能插入 IFRAME 自然能利用 Clickjacking 發動攻擊,不瞭解 Clickjacking 建議可到 Google 搜尋 Clickjacking 查詢相關資料瞭解一下,也可以看看這一則示範攻擊的影片

批判三:胡扯之說

批判三:胡扯之說

回應:

  • 這三點是相關的,我一並回應。
  • 模擬攻擊情境 ( 這是模擬的,請勿當真,不懂的人請當我在自 High ):
    • 假設總統府的網站維護人員正在維護網站,防火牆也正好因為正在維護而暫時關閉,並且已登入後台維護網站相關資料。
    • 假設駭客知道總統府內部人員或網站維護人員的 E-mail,駭客利用原有的 XSS 漏洞設計一組可嵌入惡意網址與惡意 Script 的連結,隱藏在 HTML 格式的郵件中,並透過匿名郵件 (以高階主管或總統府承辦人員的身份) 發送給網站維護人員告知總統府網站被入侵,請儘速處理。 (社交工程)
    • 網站維護人員收到這封釣魚郵件(Phishing)不疑有他的趕緊進行處理,並點擊郵件中的連結,由於是 HTML 格式的郵件,所以郵件上顯示的網址點擊的網址並不相同,沒有資安概念的人通常不會詳細檢查。 (釣魚式攻擊)
    • 網站維護人員進入「總統府網站」,而且網站畫面也並無二致,感覺無任何異狀,而且從網址列乍看之下並不會發現網址已遭竄改,但事實上駭客可能已取得該管理者的 Cookie 並可立即發動攻擊。 (Cookie hijacking 或 Session hijacking)
      中華民國總統府網站 - 新聞稿查詢
  • 鄭重申明:此乃情境模擬,並非說總統府的維護人員就是這樣維護網站,請勿延伸解讀我的文章。

批判四:對 OWASP Top 10 不夠瞭解

A1 - Cross Site Scripting (XSS)

回應:

  • 資料並未進到資料庫 以及 網站也未被傷害,不能說這就是「偽XSS」,這次的事件「就是清清楚楚的 XSS」沒有什麼「真偽」可言,弱點就是弱點,資安人員(技術人員)不能強詞奪理,非技術人員例外。 ^^

A2 - Injection Flaws  ( SQL Injection )

回應:

  • 我要是攻進去就等著被抓了,還可以在這裡分享文章嗎? XD

A4 - Insecure Direct Object Reference

回應:

  • 讓駭客知道資料庫表格名稱在我的標準來看算是個嚴重的漏洞,每個人標準不同,資安也沒有標準答案,事在人為,看主管或業主怎麼要求罷了。

A5 - Cross Site Request Forgery (CSRF)

回應:

  • 可以插入 iframe 還可以執行 onload 事件,這樣還不算?
  • 雖然 CSRF 不容易做到 HTTP POST 的攻擊,但可以透過 HTTP GET 到其他網站的資料就算是 CSRF 攻擊了,不熟悉的人還是應該多瞭解何謂 CSRF
  • 模擬攻擊情境
    • 假設駭客掌握全世界 5000 個有 XSS / CSRF 弱點的網站網址清單,並且擁有 500 萬筆正確的 E-mail 資料。
    • 駭客受了客戶委託,準備進行發動 DDoS 攻擊特定網站
    • 駭客設計一組可攻擊特定網站的惡意網址,並可透過 JavaScript 執行一個可不斷點擊特定網站的程式。
    • 接著駭客開始發送大量垃圾郵件給 500 萬個 E-mail,只要有人點擊該網址進去此網頁,就會以 User 的資源 (Browser + 頻寬) 發出大量 HTTP Request
    • 由於這些 HTTP Request 對於特定網站來說都是「正常的 Request 行為」,以致於幾乎無法阻擋此類攻擊,而這就是標準的 DDoS 攻擊手法。

A6 - Information Leakage and Improper Error Handling

回應:

  • 網站提供的線索越多,攻擊成功的機率越大,這是「機率」問題,並非「可不可以入侵」的問題

A10 - Failure to Restrict URL Access

回應:

  • 我文章中敘述的都是「假設情境」,也沒有講的很肯定,我都是用「預設」、「一般來說」、「只要」,硬要說我「羅織罪名」說不過去吧。

OWASP Top 10 在總統府就包辦 6 項,這真是一場給 Web 開發人員絕佳的機會教育阿!

回覆:

  • 希望你可以學到一些,大家教學相長。

批判五:!#!#%$#^^%&*)*(

依我個人的經驗判斷,該總統府網站 [可能] 有以下特點:

回應:

  • 就說是「可能」了,網站又不是我做的,我怎會瞭解他們的架構。
  • 但 PHP 的版本是當時他們的 Server 告訴我的,我剛查看一下,他們現在已經將 PHP 版本資訊移除了,值得嘉獎!
  • 我個人是在想,如果該網站有在監控,就不會有這個弱點了吧?會有人半夜去解決這個問題,也是因為有人在網路傳遞這類 Kuso 消息才讓他們警覺需立即處理吧,真正的攻擊行為一定是異常低調的。

 從網址列判斷這裡的 PHP 應該是以 CGI 的方式運作,非常吃系統資源,要是被 DoS 一下網站應該就會關了。

回應:

  • PHP 可以用 CGI 的方式運作,這問懂的人就知道了。
  • 況且他們用的不見得是 Linux,如果用 AIX 或 Solaris 的話,早期的 PHP 版本根本沒出 For Apache 的 PHP Module,只能以 CGI 的方式運作。
  • DoS 的全名是 Deny of Service
  • DDoS 的全名是 Distributed Deny of Service,而且你拼錯字了,不是 DDS 喔!

採用 AIX 或 Linux 或 FreeBSD 或 Solaris 平台,以 PHP 的版本研判,OS 版本也不會多新才對。

回應:

  • 不好意思,我真的說不出來耶,需要的人 (駭客) 自然會上網查,而且有些弱點他們還背的起來。

採用 Apache 網站伺服器 ( 版本號已被隱藏,這點值得鼓勵 )

回應:

  • Apache 的版本資訊預設是開啟的,你是用哪個版本的 Apache 呢?
  • PHP 舊版跟 XSS 沒關係,我也沒說有關,那是你說的。但 PHP 版本舊的確有其他的弱點可攻擊,細節我沒在研究。
  • 我只用過 MySQL, PostgresSQL, SQL Server, Oracle, Informix, DB2,但映象中只有 MySQL 有支援 LIMIT 語法,若有錯誤的地方請指正,謝謝。

給 總統府網站相關人員:

回應:

  • 如果情節重大,我個人「建議」還是要關站先。
  • 與其認錯關站,總比失誤被利用來的好吧。
  • 現在願意認錯的人越來越少了,政治正確技術精進沒有幫助,各位開發人員想想吧。

第三步:修正網站「未知」的弱點,透過「原始碼檢測軟體」找出所有弱點並一次修復對知名網站來說,這是最經濟實惠的策略!相信總統府的網站一定有防火牆設備,但請不要花大錢再買更高階的防火牆了,程式碼安全更重要。

回應:

  • 我這一段也沒說到 DDS (誤),因此不予回應。

第四步:找到對的廠商將網站改版總統府網站應該不複雜,重新製作一遍不用幾個月就完成了。

回應:

  • 我用「應該」,不是「肯定句」。
  • 現在網站有在重新招標嗎?你查到的標案編號多少?我要去標!

改版不代表「安全」,先有安全的常識與觀念才會有安全的網站。建議汰換現有的所有軟硬體,連作業系統也要升級。

回應:

  • 我也蠻想升級的,如果有一天不用看書、不用做研究就可以寫文章那該有多好。

隱藏所有軟體版本資訊 ( Linux, Apahce, MySQL, PHP, … )

回應:

  • 至少我列出的東西 (LAMP) 都是可以被隱藏的。
  • 我講的肯定是因為這些東西我都親自設定過。

這篇文章原本昨天晚上就寫好了,想說等等看今天早上問題會不會修復,不然若文章發出去可能就有一堆人想 try 總統府網站,那我就是罪人了。

回應:

  • 口水戰不予回應。
  

此文章由 will 發表於 2009/9/1 下午 10:49:10

永久連結 | 評論 (24) | 此文章的RSSRSS comment feed |

分類: Web | PHP | Security

標籤: , , , ,

收藏:

機會教育:從中華民國總統府網站被發現 XSS 漏洞講起

昨晚從黑暗執行緒那邊得知中華民國總統府網站已經淪陷了,看到總統府新聞稿一直在跳 Sorry Sorry 舞蹈,雖然只是網友惡搞,但估計這個 Cross-Site Script (XSS) 弱點可能會遭受駭客利用,騙那些好奇的鄉民點選觀看,也許背地裡會潛藏木馬或病毒在其中,各位千萬要小心啊!

總統府網站新聞稿的頁面使用了非常糟糕的設計法,導致可以讓頁面插入任意標籤(Tag Injection),雖然無法直接插入 <script> 標籤,但是至少可以插入 IFRAME 嵌入任意網頁,而且 IFRAME 只要加上 onload 屬性就等於可以執行 JavaScript 了,危險程度「極高」!

此網站可能引發的潛在危機包括:

我個人認為這已經是一個高危險性的網站了,我的 IE8 雖然有內建防止 XSS 攻擊的保護功能,但我還是將該網站網址加入「網際網路選項」的「限制的網站」,以確保不會遭受攻擊,設定方式如下圖:

「網際網路選項」的「限制的網站」

除此之外,我以 2007 年 OWASP 公佈的 Web 十大弱點, 分析總統府網站還有以下問題存在:

OWASP Top 10 在總統府就包辦 6 項,這真是一場給 Web 開發人員絕佳的機會教育阿!

依我個人的經驗判斷,該總統府網站可能有以下特點:

  • 採用 PHP 程式語言,版本竟然是 4.3.2 版,實在太舊太舊了!
    • 這種古董級的 PHP 漏洞少說也上百個,而且版本號還沒隱藏,這簡直是駭客的春藥。
    • 這也代表該網站已經年久失修了,應該是多年前完成的案子,搞不好連維護廠商都沒了。
    • 從網址列判斷這裡的 PHP 應該是以 CGI 的方式運作,非常吃系統資源,要是被 DoS 一下網站應該就會關了。
  • 採用 AIX 或 Linux 或 FreeBSD 或 Solaris 平台
    • 以 PHP 的版本研判,OS 版本也不會多新才對。
  • 採用 Apache 網站伺服器 ( 版本號已被隱藏,這點值得鼓勵 )
    • 以 PHP 的版本研判,Apache 版本也不會多新才對。
  • 採用 MySQL 資料庫,目前好像只有 MySQL 有 limit 語法,從錯誤訊息就看的出來
    • 以 PHP 的版本研判,MySQL 版本也不會多新才對。

我個人寫 PHP 的經驗約有 9 年,我知道 PHP 很容易上手,開發網站也很快,但就是缺乏工具與架構,雖然目前市面上已經有不少工具與架構可選擇,但舊有的網站還是很多,很難一口氣修正所有的缺點,相對的網站弱點也是非常多,這是個難解的問題,需要時間與金錢才能徹底解決。

最後,我有以下建議:

廣大使用者

  • 不要好奇點選任何來路不明的連結
  • 不要開啟任何來路不明的郵件或附件

所有Web開發人員

  • 要將撰寫安全的程式(Write Secure Code)的技能練到跟呼吸一樣自然,安全的程式永遠比高效能的程式來的重要,千萬不能本末倒置。
  • 多吸收些安全相關的知識,瞭解攻擊方法預防被攻擊一樣重要,一把刀兩面刃,不要做壞事就對了。

PHP 開發人員

  • 以我的個人經驗,修正弱點很容易也很快,難的是「知道弱點在哪裡」!
  • PHP 真的很容易寫出有漏洞的程式,我很難給你們建議,連我自己寫的 PHP 程式都被攻陷過,我個人認為需要「原始碼檢測軟體」才能較快的找到弱點所在,並且一口氣修復所有安全弱點。
  • 近期我們公司應該會提供這類的顧問服務,有需要這類檢測服務的人可以跟我聯絡。

總統府網站相關人員

  • 第一步:先關閉網站
  • 第二步:修正網站「已知」的弱點後再開站  [ 備註: 今天早上總統府網站已經緊急修復該弱點了 ]
  • 第三步:修正網站「未知」的弱點,透過「原始碼檢測軟體」找出所有弱點並一次修復
    • 對知名網站來說,這是最經濟實惠的策略!
    • 我相信總統府的網站一定有防火牆設備,但請不要花大錢再買更高階的防火牆了,程式碼安全更重要。
  • 第四步:找到對的廠商將網站改版
    • 總統府網站應該不複雜,重新製作一遍不用幾個月就完成了。
    • 改版不代表「安全」,先有安全的常識與觀念才會有安全的網站。
    • 建議汰換現有的所有軟硬體,連作業系統也要升級

總統府網站的建置廠商或系統管理者

  • 隱藏所有軟體版本資訊 ( Linux, Apahce, MySQL, PHP, … )
  • 隨時更新作業系統、網站伺服器、資料庫伺服器、PHP 的版本,任何已知的patch都需要定時更新
  • 不要信任所有從 Browser 端傳來的資料,對所有網路輸入的參數進行檢核 ( QueryString, POST Data, Cookies, All HTTP Headers )
  • 對所有輸出到網頁的資料進行 HTML Encode 或 URL Encode
  • 隱藏所有可能會揭露網站技術細節的資訊
  • 將前、後台區分兩個不同的網域(Domain) => 不是 Active Directory 那種網域喔!

這篇文章原本昨天晚上就寫好了,想說等等看今天早上問題會不會修復,不然若文章發出去可能就有一堆人想 try 總統府網站,那我就是罪人了。

還好總統府網站今天一早睡醒就已經修復完畢,雖然目前已經看不到原本的弱點頁面會再跳出訊息,且從弱點被發現到解決的時間雖然不到 12 小時,但漏洞存在的時間確實有很長一段時間,況且還有哪些弱點目前還不知道,不過依照目前的程式寫法來說,弱點一定還會有,所以還是小心一點為妙。

  

此文章由 will 發表於 2009/8/28 上午 09:17:00

永久連結 | 評論 (14) | 此文章的RSSRSS comment feed |

分類: Web | PHP | Security

標籤: , , ,

收藏:

在 IIS 6.0 安裝 PHP 5 的注意事項 (安全性議題 與 安裝技巧)

最近我發現在 IIS 6.0 上安裝 PHP5 有一些安全性的議題與一些安裝技巧,而這些問題都是一般管理人員不容易發現的部分,所以若有人希望 PHP 5 在 IIS 上面執行時,可以參考一下這篇文章。

---

如果你安裝 ISAPI Module for PHP5 ( php5isapi.dll ) 的話,在使用匿名存取的情況下,預設 PHP5 會以 匿名存取身份識別 ( IUSR_MachineName ) 身份執行。

IIS 6.0 驗證方法 -> 啟用匿名存取 

不過如果你安裝 FastCGI Extension for IIS6.0 並搭配 PHP5 執行的話,在使用匿名存取的情況下,卻是以 應用程式集區身份識別 ( NETWORK SERVICE ) 身份執行。

IIS 6.0 DefaultAppPool 內容 -> 應用程式集區身份識別 ( NETWORK SERVICE )

這兩者的差別對於你設定網站目錄的 存取控制清單 (ACL) 非常重要,如果不小心設定錯誤,你的 PHP 程式就可以很輕易的建立目錄、寫入檔案到你的網站上。

例如 PHP 若被發現什麼安全性漏洞,而你又來不及更新 PHP 版本,而網站目錄權限又沒有被正確設定的話,就會輕易的被植入木馬,這是件非常危險的事,不得不謹慎行事。

---

另外,如果一台 IIS 上安裝多個不同的 PHP 網站時,也建議不要使用相同的身份識別進行站台設定,否則大家共用相同的權限,對網站安全性來說也是有風險的。

---

我個人比較推薦使用 FastCGI 執行 PHP,除了比較穩定外,執行速度也會比較快。

---

如果你希望所有 *.htm 的檔案也要執行 PHP 的話,自行定義 應用程式設定 中的應用程式副檔名對應

以 FastCGI 的安裝為例,設定的步驟如下:

  1. 新增一個 .htm 的對應值,並設定執行檔路徑為 C:\WINDOWS\system32\inetsrv\fcgiext.dll
    新增/編輯應用程式副檔名對應
    應用程式設定 - 對應

  2. 開啟 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 即可,如下圖示:

在 WIndows 系統環境變數加入 TZ 變數,並指派變數值為 Asia/Taipei

設定完成後,記得要執行 iisreset 指令才會生效喔!

如果要查詢其他國家的時區變數值可以參考以下網址:http://www.theprojects.org/dev/zone.txt

相關連結

  

此文章由 will 發表於 2009/3/14 下午 07:54:00

永久連結 | 評論 (4) | 此文章的RSSRSS comment feed |

分類: IIS | PHP | Security | 系統管理

標籤: , , ,

收藏: