據(jù)說由于PHP5.3的全新特效及改進(jìn),原有的isapi方式解析PHP腳本已經(jīng)不被支持,PHP從5.3.0以后的版本開始使用微軟的fastcgi模式,經(jīng)過自己的安裝,發(fā)現(xiàn)5.2也是這個(gè)樣子,fastcgi模式這是一個(gè)更先進(jìn)的方式,運(yùn)行速度更快,更穩(wěn)定!新版本的PHP5.2通過以往老方法已經(jīng)不能在IIS上安裝了,下載IIS下的PHP,解壓到所需目錄,該目錄需要給予user讀取運(yùn)行權(quán)限,呃 一般我都是everyone的
這里用的服務(wù)器操作系統(tǒng)是x86版本的,所以以下程序均為在Windows x86環(huán)境下使用的版本。
首先我們要下載兩個(gè)工具,F(xiàn)astCGI和php
1,FastCGI
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)
下載:http://www.iis.net/extensions/FastCGI,選擇: x86
2,PHP 推薦PHP 5.2.17的ZIP壓縮包版本
http://windows.php.net/downloads/releases/php-5.2.17-nts-Win32-VC6-x86.zip
文件下載完成后,對文件進(jìn)行一次病毒掃描,以防意外,畢竟小心使得萬年船,服務(wù)器不是別的,如果中毒那損失可就大了。
不建議將php裝在C盤,因?yàn)槲沂怯玫奶摂M機(jī)做測試,所以我將PHP裝在了c盤,如果你的安裝路徑不同,請自行修改以下提及到的對應(yīng)路徑。
第二步、安裝PHP
一、安裝 FastCGI For IIS6
將下載得到的fcgisetup32.msi,雙擊運(yùn)行進(jìn)行安裝。
安裝后在 C:\WINDOWS\system32\inetsrv 目錄下產(chǎn)生了五個(gè)文件。
同時(shí)在 IIS 的 “Web 服務(wù)擴(kuò)展”里多了 FastCGI Handler。
二、安裝PHP
下載 .zip 格式的版本,解壓縮下載的 php-5.2.17-nts-Win32-VC6-x86.zip,并將其復(fù)制到c:\PHP目錄(你可以根據(jù)自己的意愿解壓到別的目錄。),并給 IIS 啟動(dòng)帳戶組或用戶賦予讀取和運(yùn)行權(quán)限。
c:\php目錄下的所有dll文件復(fù)制到C:\windows\system32下(Windows2000系統(tǒng)為C:\winnt\system32,下同),如果已經(jīng)有若干同名文件存在,覆蓋即可。
注冊 PHP 到 FastCGI
打開 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件。
; This is the configuration file for the FastCGI handler for IIS 6.0.
; The FastCGI handler will look for this file in the same directory as
; fcgiext.dll. By default, the FastCGI installer will place this file into
; the %windir%\system32\inetsrv directory.
我個(gè)人的理解是,只要“Web 服務(wù)擴(kuò)展”里的 FastCGI Handler 為允許時(shí),在加載 fcgiext.dll 時(shí),會讀取 fcgiext.ini 配置文件的內(nèi)容,根據(jù)里面的配置為每個(gè)網(wǎng)站提供映射。
在 [Types] 下添加以下配置:
[Types]
php=PHP
[PHP]
ExePath=c:\PHP\php-cgi.exe
這里要用:“\”不能用“/”,“php”表示擴(kuò)展名,“PHP”是配置節(jié)名稱,以“[PHP]”定義。 (選你自己的安裝的目錄,下同。)
c:\PHP目錄下的php.ini-development復(fù)制一份,更名為php.ini(還是在當(dāng)前目錄中),再用文本編輯軟件打開這個(gè)php.ini(建議使用Notepad2、EditPlus、UltraEdit等各種支持語法高亮顯示的文本編輯軟件)。
查找:extension_dir = “./”
將其路徑知道你的PHP目錄下的擴(kuò)展功能目錄中,這里PHP5對應(yīng)修改為extension_dir = “c:/PHP/ext” 。
再在d盤下建立文件夾,并命名為upload_tmp
查找 ;upload_tmp_dir =
將;upload_tmp_dir =該行的注釋符,即前面的分號”;”去掉,使該行在php.ini文檔中起作用。
upload_tmp_dir是用來定義上傳文件存放的臨時(shí)路徑,在這里你還可以修改并給其定義一個(gè)決定路徑,需要注意的是,這里設(shè)置的目錄必須有讀、寫權(quán)限。
這里我設(shè)置為upload_tmp_dir = “d:/upload_tmp/” (這里就是我前面建立的文件夾)
找到:fastcgi.impersonate = 1;把前面的;去掉,
fastcgi.impersonate = 1
找到:short_open_tag= Off;
short_open_tag= On
搜索 ; Windows Extensions,定位到php.ini文件的extension,將下面列出的常用擴(kuò)展前面的分號注釋符去掉:
; extension=php_curl.dll
; extension=php_gd2.dll
; extension=php_ldap.dll
; extension=php_mbstring.dll
; extension=php_exif.dll
; extension=php_mysql.dll
; extension=php_mysqli.dll
; extension=php_sockets.dll
; extension=php_xmlrpc.dll
特別提示:Exif擴(kuò)展是用來顯示圖片的exif信息的,因該擴(kuò)展需要mbstring支持,所以將extension=php_exif.dll這一行移動(dòng)到extension=php_mbstring.dll一行的下面。
注意最后一個(gè)php_zip.dll這個(gè)在我下載下來的php5.3.0的ext內(nèi)是不存在的,所以如果開啟會報(bào)錯(cuò)誤,如果實(shí)在需要這個(gè)DLL,可以從 PHP5.2中拷貝過去(php5.2.X可以,php5.3.0不行)extension=php_ming.dllphp5.3.0的ext內(nèi)是也不存在
;date.timezone =
去掉前面的分號注釋符,這里將其設(shè)置為 date.timezone = Asia/Shanghai
找到下面
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
; date.timezone =
更改為并去除前面的“;”:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai
如果不改以上的date.timezone可能打開網(wǎng)頁會提示500錯(cuò)誤
關(guān)于時(shí)區(qū)設(shè)定的說明:
從php5.1.0開始,php.ini里加入了date.timezone這個(gè)選項(xiàng),默認(rèn)情況下是關(guān)閉的,也就是顯示的時(shí)間(無論用什么php命令)都是格林威治標(biāo)準(zhǔn)時(shí)間,和我們的時(shí)間(北京時(shí)間)差了正好8個(gè)小時(shí),有以下2種方法可以恢復(fù)正常的時(shí)間。
1、如果要用5.1以上版本,而且不修改php.ini,則需要在關(guān)于時(shí)間的初始化的語句的上面加上date_default_timezone_set (XXX),或者使用date(‘Y-m-d G:i:T’, strtotime(‘+8HOUR’) )來獲取日期時(shí)間;
2、一勞永逸,僅限能修改php.ini。打開php.ini把date.timezone前面的分號去掉,在=后面加XXX,重啟http服務(wù)(如apache2或iis等)即可。
關(guān)于XXX,大陸內(nèi)陸可用的值是:Asia/Chongqing、Asia/Shanghai、Asia/Urumqi(依次為重慶,上海,烏魯木齊),港臺地區(qū)可用:Asia/Macao、Asia/Hong_Kong、Asia/Taipei(依次為澳門,香港,臺北),還有新加坡:Asia /Singapore,以上沒有北京,不過接著往下看,其他可用的值是:Etc/GMT-8,Singapore ,Hongkong,PRC(中華人民共和國)。
查找:;session.save_path = “/tmp”
將前面的分號注釋符去掉,這里將其設(shè)置為session.save_path = “D:/upload_tmp” (這里就是我前面建立的文件夾)
如果你有遇到無法上傳較大文件或者運(yùn)行某些程序經(jīng)常超時(shí),那么可以修改以下內(nèi)容來調(diào)整相關(guān)限額:
max_execution_time = 30 ; 這個(gè)是每個(gè)腳本運(yùn)行的最長時(shí)間,根據(jù)你的需求更改數(shù)值,單位秒
max_input_time = 60 ; 這是每個(gè)腳本可以消耗的時(shí)間,根據(jù)你的需求更改數(shù)值,單位也是秒
memory_limit = 128M ; 這個(gè)是腳本運(yùn)行最大消耗的內(nèi)存,根據(jù)你的需求更改數(shù)值,256M。
post_max_size =10M
表單提交最大數(shù)據(jù)為10M.此項(xiàng)不是限制上傳單個(gè)文件的大小,而是針對整個(gè)表單的提交數(shù)據(jù)進(jìn)行限制的.
限制范圍包括表單提交的所有內(nèi)容.例如:發(fā)表貼子時(shí),貼子標(biāo)題,內(nèi)容,附件等…根據(jù)你的需求更改數(shù)值,M是單位:兆。
大約第883行,
upload_max_filesize = 2M ;
上載文件的最大許可大小 ,根據(jù)你的需求更改數(shù)值,M是單位:兆。
在論壇發(fā)表貼子時(shí),您post_max_size 設(shè)為10M,而此項(xiàng)設(shè)成了2M,那么您只能上傳最大為2M的附件,且可以同時(shí)上傳5個(gè).
配置網(wǎng)站
打開IIS管理器,網(wǎng)站上點(diǎn)右鍵-屬性-主目錄-配置-添加,
可執(zhí)行文件路徑:C:\WINDOWS\system32\inetsrv\fcgiext.dll
先運(yùn)行c:\PHP\php-cgi.exe如果能進(jìn)入命令窗口并只有光標(biāo),說明FastCGI能正常調(diào)用php-cgi,否則會提示錯(cuò)誤,這點(diǎn)對使用微軟的fastcgi模式很重要。
寫個(gè) php 測試下吧
修改完在IIS上或者命令提示符運(yùn)行iisreset命令重啟IIS服務(wù),這步很重要!
測試是否安裝成功!
建立一個(gè)網(wǎng)站,phpinfo.php文件內(nèi)容為:
文件:phpinfo.php(內(nèi)容如下)
然后訪問這個(gè)文件,如果看到php詳細(xì)信息頁面,就說明你的服務(wù)器可以跑 php 了。
(2)mysql配置:
將mysql安裝目錄下bin目錄中的 libmysql.dll復(fù)制到"c:\windows\system32"目錄下;
將php-5.1.17\ext目錄下的
php_curl.dll
php_gd2.dll
php_ldap.dll
php_mbstring.dll
php_exif.dll
php_mysql.dll
php_mysqli.dll
php_sockets.dll
php_xmlrpc.dll
復(fù)制到“C:\WINDOWS\system32”目錄下。
如果安裝成功則可以進(jìn)行下測試,在程序中啟動(dòng)mysql命令行工具,輸入密碼,提示登錄成功,即可。
(3)很多時(shí)候我們都用到curl
但是有的時(shí)候curl加載失敗,這是缺少dll造成的,其實(shí)手冊上寫的很清楚了
To use PHP's cURL support you must also compile PHP --with-curl[=DIR] where DIR is the location of the directory containing the lib and include directories. In the "include" directory there should be a folder named "curl" which should contain the easy.h and curl.h files. There should be a file named libcurl.a located in the "lib" directory. Beginning with PHP 4.3.0 you can configure PHP to use cURL for URL streams --with-curlwrappers.
Note to Win32 Users: In order to enable this module on a Windows environment, libeay32.dll and ssleay32.dll must be present in your PATH. (作者注:嘿嘿,windows用戶要拷貝PHP/目錄下的libeay32.dll和ssleay32.dll到windows目錄或windows/system32目錄下,只要是環(huán)境變量里Path變量里的路徑就OK,你把PHP路徑放到Path變量里也應(yīng)該可以,我沒做測試,因?yàn)閣in2003里面PHP的php.ini在IIS里只認(rèn)得WINDOWS目錄,所以我把PHP.INI和這兩個(gè)文件都放到C:\WINDOWS下了,測試通過)