Archive

Posts Tagged ‘IIS’

[WordPress] 在 IIS 使用固定網址(Permalink)

一月 8th, 2009

Apache 有個非常強大好用的 mod_rewrite 模組,可以實現 URL Rewriting,運用在網站或部落格對 SEO 會有幫助。WP 的固定網址也是這類的運用,一般架設在 Apache 不會有什麼問題,只要有啟用 mod_rewrite 就 OK,不過如果是裝在 IIS 上,那就會看到很醜的 /index.php/aaa/bbb/123 這樣的網址,本篇就是教大家如何讓 IIS 真正擁有 rewrite 的功能。

首先必須安裝 for IIS 的擴充,微軟有針對 IIS7 開發一套 URL Rewrite Module,不過 IIS6 就只能用別的,測試很多套最後選擇 ISAPI_Rewrite,因為它幾乎相容 .htaccess、mod_rewrite 語法,也比較穩定,ISAPI_Rewrite 有分要錢的 full 版和免費的 Lite 版,差異請看這篇,目前選 Lite 就夠用了。

Step 1
先設定 WordPress ,進入後台選擇想要的固定網址格式,如「/%year%/%monthnum%/%day%/%postname%.html」,記得把前面 index.php 拿掉。
固定網址

Step 2
安裝好 ISAPI_Rewrite 3 Lite,編輯安裝目錄下的 httpd.conf 設定檔,內容範例:

# 假設WP網址為 http://aaa.domain.com/blog/
RewriteCond %{HTTP_HOST} ^aaa\.domain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/blog/ /blog/index\.php [L]

# 假設WP網址為 http://bbb.domain.com
RewriteCond %{HTTP_HOST} ^bbb\.domain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index\.php [L]

Step 3
基本上完成前兩個動作固定網址就可以運作了,但是如果網址帶有中文就會發生 404 錯誤,原因可以參考這篇,修改 wp-includes/classes.php

// 找到
$pathinfo = $_SERVER['PATH_INFO'];
// 改成
$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], 'UTF-8', 'BIG5');

// 找到
$req_uri = $_SERVER['REQUEST_URI'];
// 改成
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], 'UTF-8', 'BIG5');

這樣就正常了。註:PHP 必須啟用 mbstring。

Server, Windows, 程式筆記, 系統筆記 , , , , ,

IIS6+PHP5 (FastCGI) 安裝攻略

九月 30th, 2008

以往 PHP 的執行模式可分成 CGI 及 ISAPI 兩種,CGI 的 performance 是出名的慢,而 ISAPI 是較多人使用的,但是在 Windows 卻穩定性不佳,經常會導致整個 web server crash,所以微軟特別針對 IIS 開發了 FastCGI 模組(IIS7 已內建),據說效能及穩定性都有大大改善。

安裝步驟:
1. 確認 IIS 已經裝好,然後下載 FastCGI Extension for IIS 6 並且安裝完成。

2. 到 PHP 官網下載新版 PHP5 壓縮檔,並且解壓縮(假設在 C:\PHP5)。

3. 將 C:\PHP5\php.ini-dist 改名為 php.ini,然後依需求編輯設定檔內容,範例:
(後三行必要)

include_path = ".;C:\Inetpub\wwwroot"
extension_dir = "C:\PHP5\ext"

extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_zip.dll

date.timezone = "Asia/Taipei"

cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1;

4. 對 C:\PHP5 目錄增加 IIS_WPG 群組的讀取及執行權限。
(沒加這個就會跑出 FastCGI Error)

5. 加入系統環境變數 (讓 extension 及 php.ini 能順利被找到)。
Path=C:\PHP5;
PHPRC=C:\PHP5

6. 開啟 IIS 管理員,如下圖設定。

7. 增加預設首頁 index.php

8. 檢查網頁服務延伸。
(正常的話應該會有這一項,若沒有請自行加入 C:\WINDOWS\system32\inetsrv\fcgiext.dll)

9. 開始 > 執行 > cmd
輸入四道指令(注意路徑):
cd C:\WINDOWS\system32\inetsrv

cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP5\php-cgi.exe"

cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:10000

cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000
(視情況修改數值,InstanceMaxRequests 需小於等於 PHP_FCGI_MAX_REQUESTS)

10. 重新啟動 IIS 就 OK 囉,丟一個測試檔案到網站目錄看看吧!

※2009/03/19 補充:
使用 FastCGI 執行 PHP 程式時,系統是以「NETWORK SERVICE」這個身份執行的,而一般靜態檔案則是以 IIS 預設的匿名身份「IUSR_MachineName」執行,所以如果安裝上發生問題,請特別注意這個權限配置。

相關文章:

PHP, Server, Windows, 系統筆記 , , ,

IIS6+PHP5 (ISAPI) 安裝攻略

九月 30th, 2008

最近因為特別需求要在 IIS6 上面跑 PHP,把以前寫的筆記拿出來看,卻發現怎麼弄也跑不起來,看了很多篇文章還是不行,研究了許久終於可以跑了,經過多次測試保證 100% 可行。
※ 此篇是以 ISAPI 模式執行 PHP,建議使用另一篇的 FastCGI 會有較好的效能。

安裝步驟:
1. 確認 IIS 已經裝好,到 PHP 官網下載新版 PHP5 壓縮檔,並且解壓縮(假設在 C:\PHP5)。

2. 將 C:\PHP5\php.ini-dist 改名為 php.ini,然後依需求編輯設定檔內容,範例:

include_path = ".;C:\Inetpub\wwwroot"
extension_dir = "C:\PHP5\ext"

extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_zip.dll

date.timezone = "Asia/Taipei"

3. 對 C:\PHP5 目錄增加 IIS_WPG 群組及 IUSR_XXXX 使用者的讀取及執行權限。
(關鍵步驟,一定要兩個都增加,否則執行 PHP 會跳出驗證框)

4. 加入系統環境變數 (讓 extension 及 php.ini 能順利被找到)。
Path=C:\PHP5;
PHPRC=C:\PHP5

5. 開啟 IIS 管理員,如下圖設定。

6. 增加預設首頁 index.php

7. 增加網頁服務延伸。

8. 重新啟動 IIS 就 OK 囉,丟一個測試檔案到網站目錄看看吧!

PHP, Server, 程式筆記, 系統筆記 , , , ,

IIS 6 + PHP 配置教學 (For 2003)

十二月 24th, 2005

※ 此篇文章已更新,請看 http://blog.linym.net/archives/240

這篇是接續前一篇的,在 IIS 6 安裝 PHP 需要多一個步驟。
照圖步驟完成後重新啟動 IIS 即可。
如果執行 PHP 會跑出認證對話框,
則必須修改 php5isapi.dll 這個檔案的權限,允許 IIS 帳戶存取它。
1379875114.jpg
1357559820.jpg

Windows, 系統筆記 , ,

IIS 5 + PHP 配置教學 (For 2000/XP)

十二月 24th, 2005

雖然這幾年都改用 Apacher 了,不過可能有機會用到 IIS 安裝 PHP,而且網路上有些文章的方法不太完整,或是已經無法適用,所以在這裡為自己作個小小的筆記,跑 PHP 建議是以 ISAPI 模式來安裝,執行效率會比較好,也比較不會有問題,所以底下就介紹 ISAPI 的安裝方式,假設 IIS 都已經安裝好且可以 run 了。

Step 1:
PHP 官網下載最新版的 zip 封裝檔 (不要用安裝包)。
然後解壓縮到喜歡的路徑。(範例是 C:\PHP)

Step 2:
將 C:\PHP\php.ini-dist 更名為 php.ini 。修改內容:
找到:
extension_dir = "./"

修改成:(依自己路徑設定)
extension_dir = "C:\PHP\ext"
存檔。

Step 3:
到 C:\PHP
將 php.ini 複製到 C:\WINDOWS
將 php5ts.dll 複製到C:\WINDOWS\system32

Step 4:
開啟 IIS 管理工具,進入網站內容->主目錄->設定。
新增應用程式對應,設定如圖:
1013282394.jpg
完成後點兩次確定返回。

Step 5:
切換至文件標籤,新增 index.php
重新啟動 IIS 就完成了。

Windows, 系統筆記 , ,