武林網訊 據說由于PHP5.3的全新特效及改進,原有的isapi方式解析PHP腳本已經不被支持,PHP從5.3.0以后的版本開始使用微軟的fastcgi模式,經過自己的安裝,發現5.2也是這個樣子,fastcgi模式這是一個更先進的方式,運行速度更快,更穩定!新版本的PHP5.2通過以往老方法已經不能在IIS上安裝了,下載IIS下的PHP,解壓到所需目錄,該目錄需要給予user讀取運行權限,呃 一般我都是everyone的
這里用的服務器操作系統是x86版本的,所以以下程序均為在Windows x86環境下使用的版本。
首先我們要下載兩個工具,FastCGI和php
1,FastCGI
fcgisetup32.msi(FastCGI Extension for IIS 6.0 x86)選擇: x86
2,PHP 推薦PHP 5.2.17的ZIP壓縮包版本
文件下載完成后,對文件進行一次病毒掃描,以防意外,畢竟小心使得萬年船,服務器不是別的,如果中毒那損失可就大了。
不建議將php裝在C盤,因為我是用的虛擬機做測試,所以我將PHP裝在了c盤,如果你的安裝路徑不同,請自行修改以下提及到的對應路徑。
第二步、安裝PHP
一、安裝 FastCGI For IIS6
將下載得到的fcgisetup32.msi,雙擊運行進行安裝。
安裝后在 C:/WINDOWS/system32/inetsrv 目錄下產生了五個文件。
同時在 IIS 的 “Web 服務擴展”里多了 FastCGI Handler。
二、安裝PHP
下載 .zip 格式的版本,解壓縮下載的 php-5.2.17-nts-Win32-VC6-x86.zip,并將其復制到c:/PHP目錄(你可以根據自己的意愿解壓到別的目錄。),并給 IIS 啟動帳戶組或用戶賦予讀取和運行權限。
c:/php目錄下的所有dll文件復制到C:/windows/system32下(Windows2000系統為C:/winnt/system32,下同),如果已經有若干同名文件存在,覆蓋即可。
注冊 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.
我個人的理解是,只要“Web 服務擴展”里的 FastCGI Handler 為允許時,在加載 fcgiext.dll 時,會讀取 fcgiext.ini 配置文件的內容,根據里面的配置為每個網站提供映射。
在 [Types] 下添加以下配置:
[Types]
php=PHP
[PHP]
ExePath=c:/PHP/php-cgi.exe
這里要用:“/”不能用“/”,“php”表示擴展名,“PHP”是配置節名稱,以“[PHP]”定義。 (選你自己的安裝的目錄,下同。)
c:/PHP目錄下的php.ini-development復制一份,更名為php.ini(還是在當前目錄中),再用文本編輯軟件打開這個php.ini(建議使用Notepad2、EditPlus、UltraEdit等各種支持語法高亮顯示的文本編輯軟件)。
查找:extension_dir = “./”
將其路徑知道你的PHP目錄下的擴展功能目錄中,這里PHP5對應修改為extension_dir = “c:/PHP/ext” 。
再在d盤下建立文件夾,并命名為upload_tmp
查找 ;upload_tmp_dir =
將;upload_tmp_dir =該行的注釋符,即前面的分號”;”去掉,使該行在php.ini文檔中起作用。
upload_tmp_dir是用來定義上傳文件存放的臨時路徑,在這里你還可以修改并給其定義一個決定路徑,需要注意的是,這里設置的目錄必須有讀、寫權限。
這里我設置為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,將下面列出的常用擴展前面的分號注釋符去掉:
; 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擴展是用來顯示圖片的exif信息的,因該擴展需要mbstring支持,所以將extension=php_exif.dll這一行移動到extension=php_mbstring.dll一行的下面。
注意最后一個php_zip.dll這個在我下載下來的php5.3.0的ext內是不存在的,所以如果開啟會報錯誤,如果實在需要這個DLL,可以從 PHP5.2中拷貝過去(php5.2.X可以,php5.3.0不行)extension=php_ming.dllphp5.3.0的ext內是也不存在
;date.timezone =
去掉前面的分號注釋符,這里將其設置為 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可能打開網頁會提示500錯誤
關于時區設定的說明:
從php5.1.0開始,php.ini里加入了date.timezone這個選項,默認情況下是關閉的,也就是顯示的時間(無論用什么php命令)都是格林威治標準時間,和我們的時間(北京時間)差了正好8個小時,有以下2種方法可以恢復正常的時間。
1、如果要用5.1以上版本,而且不修改php.ini,則需要在關于時間的初始化的語句的上面加上date_default_timezone_set (XXX),或者使用date(‘Y-m-d G:i:T’, strtotime(‘+8HOUR’) )來獲取日期時間;
2、一勞永逸,僅限能修改php.ini。打開php.ini把date.timezone前面的分號去掉,在=后面加XXX,重啟http服務(如apache2或iis等)即可。
關于XXX,大陸內地可用的值是:Asia/Chongqing、Asia/Shanghai、Asia/Urumqi(依次為重慶,上海,烏魯木齊),港臺地區可用:Asia/Macao、Asia/Hong_Kong、Asia/Taipei(依次為澳門,香港,臺北),還有新加坡:Asia /Singapore,以上沒有北京,不過接著往下看,其他可用的值是:Etc/GMT-8,Singapore ,Hongkong,PRC(中華人民共和國)。
查找:;session.save_path = “/tmp”
將前面的分號注釋符去掉,這里將其設置為session.save_path = “D:/upload_tmp” (這里就是我前面建立的文件夾)
如果你有遇到無法上傳較大文件或者運行某些程序經常超時,那么可以修改以下內容來調整相關限額:
max_execution_time = 30 ; 這個是每個腳本運行的最長時間,根據你的需求更改數值,單位秒
max_input_time = 60 ; 這是每個腳本可以消耗的時間,根據你的需求更改數值,單位也是秒
memory_limit = 128M ; 這個是腳本運行最大消耗的內存,根據你的需求更改數值,256M。
post_max_size =10M
表單提交最大數據為10M.此項不是限制上傳單個文件的大小,而是針對整個表單的提交數據進行限制的.
限制范圍包括表單提交的所有內容.例如:發表貼子時,貼子標題,內容,附件等…根據你的需求更改數值,M是單位:兆。
大約第883行,
upload_max_filesize = 2M ;
上載文件的最大許可大小 ,根據你的需求更改數值,M是單位:兆。
在論壇發表貼子時,您post_max_size 設為10M,而此項設成了2M,那么您只能上傳最大為2M的附件,且可以同時上傳5個.
配置網站
打開IIS管理器,網站上點右鍵-屬性-主目錄-配置-添加,
可執行文件路徑:C:/WINDOWS/system32/inetsrv/fcgiext.dll
先運行c:/PHP/php-cgi.exe如果能進入命令窗口并只有光標,說明FastCGI能正常調用php-cgi,否則會提示錯誤,這點對使用微軟的fastcgi模式很重要。
寫個 php 測試下吧
修改完在IIS上或者命令提示符運行iisreset命令重啟IIS服務,這步很重要!
測試是否安裝成功!
建立一個網站,phpinfo.php文件內容為:
文件:phpinfo.php(內容如下)
然后訪問這個文件,如果看到php詳細信息頁面,就說明你的服務器可以跑 php 了。
(2)mysql配置:
將mysql安裝目錄下bin目錄中的 libmysql.dll復制到"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
復制到“C:/WINDOWS/system32”目錄下。
如果安裝成功則可以進行下測試,在程序中啟動mysql命令行工具,輸入密碼,提示登錄成功,即可。
(3)很多時候我們都用到curl
但是有的時候curl加載失敗,這是缺少dll造成的,其實手冊上寫的很清楚了
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目錄下,只要是環境變量里Path變量里的路徑就OK,你把PHP路徑放到Path變量里也應該可以,我沒做測試,因為win2003里面PHP的php.ini在IIS里只認得WINDOWS目錄,所以我把PHP.INI和這兩個文件都放到C:/WINDOWS下了,測試通過)
新聞熱點
疑難解答
圖片精選