本文轉自:http://marsren.blog.51cto.com/116511/41199/
在Windows Server 2003的IIS6下配置ISAPI方式的PHP,配置方法是,在IIS的“WEB服務擴展”中,添加一個新的WEB服務擴展,程序后綴為PHP,ISAPI程序為php5isapi.dll,然后再我的電腦->屬性->高級->“環境變量”-“系統變量”中增加變量名PHPRC,數值為php.ini的路徑,在Internet信息服務管理器中,選擇網站或應用程序的根目錄,打開目錄屬性頁(右鍵選擇“屬性”),再選擇“主目錄”。點擊“配置”按鈕,選擇“映射”Tab頁。點擊“添加...”,在“可執行文件”設為: c:\php\php5isapi.dll,擴展名設為.php,選擇“確認文件是否存在”,然后“確定”保存設置。重啟服務器即可完成PHP的配置。
以上紅色部分不用做,因為用ISAPI配PHP,不讀系統變量(CGI方式才讀),相關權限設置如下:
<網頁所在文件夾配置“IUSR_***”的讀權限,如果要寫的就給修改權限
PHP文件所在文件夾配置“NETWORK SERVICE”和“IUSR_***”的讀權限。
php.ini文件給“NETWORK SERVICE”讀權限
考到SYSTEM32目錄的DLL文件要給“IUSR_**”的讀取和運行權限
解壓縮 PHP 二進制壓縮包到 D:\php 目錄下
然后打開“我的電腦”->“屬性”->“高級”->“環境變量”->“系統變量”->“path”,編輯其值,在前面增加下面的路徑地
址:
;D:\php;D:\php\ext(注意前面的分號)
在用IIS整合php時,有兩種方式:ISAPI與CGI模式,這兩種方式,我們都可以看到phpinfo頁面,但是使用ISAPI模式,無法讀取環境變量,所以通過環境變量PHPRC設置的php.ini路徑無法找到。使用CGI就可以,這樣就不必把好多文件拷到系統文件下。
配置文件(PHP 3中是php3.ini,自PHP 4起是php.ini)在PHP啟動時被讀取。對於服務器模塊版本的PHP,僅在
web服務器啟動時讀取一次。對於CGI和CLI版本,每次調用都會讀取。
php.ini的搜索路徑如下(按順序):
* SAPI模塊所指定的位置(Apache2中的PHPIniDir指令,CGI和CLI中的-c命令行選項,NSAPI
中的php_ini參數,THTTPD中的PHP_INI_PATH環境變量)
*HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath(Windows注冊表位置)
*PHPRC環境變量
*當前工作目錄(對於CLI)
*web服務器目錄(對於SAPI模塊)或PHP所在目錄(Windows下其它情況)
*Windows目錄(C:\windows或C:\winnt),或--with-config-file-path編譯時選項指定的位置
我在Server2003+php4的環境下遇見了這個問題,解決的方法是在前面寫PATH環境變量的時候,添加一個PHPRC,指向x:\php4\php.ini,重新啟動即可,如果實在還是不行的,最后還有一招就是安裝zend,php加速器,因為安裝zend的時候,會指定php.ini的路徑,也會指定所使用的服務器是IIS還是Apache,起本質是對注冊表做了修改,但是我不知道修改了哪個位置,所以我在上面的操作還是無效的情況下,最后安裝Zend,終於成功解決問題了。
將 php.ini-dist 或 php.ini-recommended 復制到 C:\Windows 目錄下,並改名為 php.ini
一般正式發布網站的服務器用php.ini-recommended 安全性高
而作為調試用的服務器用php.ini-dist 更好
當然一般情況下,這個 php.ini 還是需要根據實際情況來修改的。
下面來介紹一下幾個必要的修改選項:
復制libmysql.dll到System32目錄
extension_dir = "D:\php\ext"
這個是 PHP 擴展所放置的目錄,請確保跟你實際安裝的目錄相同。
設置正確的時區:
找到“date.timezone”設置成:date.timezone = PRC
以下操作選擇性的打開或關閉PHP擴展
extension=php_mssql.dll
extension=php_mysql.dll
上面這些,開頭沒有加分號的是打開的擴展,加了分號的是沒有打開的擴展。
session.save_path = c:\sessions
這個是 session 文件默認保存的目錄,這個目錄必須是一個存在的目錄,不然默認的 session 功能會無效。我這里設置的是一個 ramdisk 上的一個目錄。將 session.save_path 設置在 ramdisk 上可以加快 session 處理的速度。如果你沒有安裝 ramdisk,你可以把它指定到其他盤的任何一個目錄下,如 C:\sessions 目錄、C:\Windows\Temp 目錄等。
OK,基本工作作完了,現在該配置 IIS 了。
打開“ Internet 信息服務(IIS)管理器”,在“ Web 服務擴展”里,選擇“添加一個新的 Web 服務擴展”,擴展名可填寫
“PHP ISAPI 擴展”,要求的文件選擇:D:\php\php5isapi.dll(如果安裝的是 PHP4,則此處是 C:\php\sapi\php4isapi.dll
,下同),並設置擴展狀態為允許。
打開“網站”->“屬性”->“ISAPI 篩選器”->“添加”,篩選器名稱可填寫“PHP”,可執行文件仍然選擇
D:\php\php5isapi.dll。
打開“網站”->“屬性”->“主目錄”->“應用程序設置”->“配置”->“應用程序擴展”->“添加”,可執行文件還是選擇
<d:\php\php5isapi.dll。擴展名填寫“.php”,動作限制為“head,get,post”。
打開“網站”->“屬性”->“文檔”->“啟用默認內容文檔”->“添加”,可以將 index.php 添加為默認內容文檔。
然后選擇“服務器機器名”->“所有任務”->“重新啟動 IIS”來重啟 IIS。
測試
在默認網站發布目錄下,建立一個測試頁面:
下載:phptest.php
phpinfo();
?>
如果打開這個頁面能夠看到 php 安裝配置信息,就算是安裝成功了。
如果想要更優化的執行 php 程序,可以安裝 ZendOptimizer-2.6.0-Windows-i386.exe ,這個東西安裝非常簡單,這里就不介
紹了。
升級
現在升級就非常簡單了。只需要將新版本的 PHP 二進制壓縮包下載下來,將原來的 D:\php 目錄刪除,將新版本解壓縮到
<d:\php body="" 目錄中復制任何文件。是不是很方便啊?<="" system32="" 就可以了。不需要修改任何配置,也不需要往="" iis="" 目錄中,然后重新啟動一下="">
IIS php篩選器php5isapi.dll加載失敗
原因:服務器做了安全設置,把d:\php的everyone權限去掉了,IIS自然沒法加載php5isapi.dll。
解決辦法:d:\php目錄加上everyone用戶 設置權限為:只讀就可以了
我所碰到兩個最難的地方就是:php5isapi.dll未加載和無法正常啟動MySQL,現在分享我的解決方案。
【php5isapi.dll未加載】:
IIS上設置之后,也開啟了WEB服務擴展中的“所有未知的ISAPI擴展”和“Active server pages”兩項,但回到ISAPI篩選器中寫入的php5isapi.dll要么就是“狀態:未知”(無圖標),要么就是“狀態:未啟動”(紅色向下箭頭圖標)。
解決辦法:
1.首先確定權限的限制是由兩部分造成的:系統文件權限以及服務器擴展權限,首先來到這個ISAPI鏈接庫文件所在的地方,之后給予這個文件EveryOne的完全控制權限(你也可以選擇讀取+寫入+執行的權限組合)。
2.解決服務器擴展權限:來到IIS6.0的“服務器擴展”設置頁面,如果你想圖省事,可以直接點擊“允許所有的未知ISAPI”的按鈕,但我並不推薦這樣做,這樣太不安全了!我們在此應當添加一個新的服務器擴展,擴展名你可以隨便填,文件就選擇到那個ISAPI鏈接庫文件上,然后勾選“將狀態設置為允許”后,保存。
3.為了使設置生效,請重啟系統,重啟后你的ISAPI擴展就可以正常加載了!
【無法正常啟動MySQL】
一般的原因都是以前安裝過,現在升級或者是在控制面板里卸載后重新安裝。升級的話就不提了,一般都是my.ini造成的。對新人來說最麻煩的原來沒有卸載干凈,現在重裝mysql后造成在windows服務里無法正常啟動項目,錯誤提示:1067。
要完全清除mysql有五個步驟:(我的系統是2003 server,請注意!)
1. 先不要急着到控制面板里卸載。cmd里進入mysql下的bin目錄,執行mysqld-nt -remove,提示完成后關閉窗口。
2. 控制面板卸載。
3. 我的操作系統是2003 server,所以windows目錄下沒有my.ini文件,不需要手動清除,只需要把原來安裝過的路徑文件夾刪除,記得是徹底刪除,不是移入回收站。
4. cmd下執行regedit,進入注冊表,查找關鍵字mysql,將系統盤記錄的部分全部刪除,當然可能有一兩個是非系統盤寫入項目,無所謂。按F3鍵可查找下一個,直到全部查找完成。(新人記得備份注冊表先!)
5. 重啟。
基本上上面五個步驟可完全清除,重新安裝完成后,在基本的MySQL Server Instance Config Wizard設置里就能啟動服務和保存安全設置。
這是我一個新人碰到1067錯誤后所總結出來的5點操作,可能看起來很簡單,但也許對一些同樣是新人的朋友有所幫助。歡迎老鳥指教。
在2003的系統配置中,有些權限的設置不到位會折騰很久,這里分享一些經驗出來,方便大家參考同時也供以后自己查閱。
1、檢查目錄中的PHP.INI文件權限,並賦予EVERYONE讀取權限;
2、檢查目錄中PHP5ISAPI.DLL文件權限,並賦予EVERYONE讀取權限;
3、如果上邊兩步還不能解決問題,請在添加刪除程序中系統組件配置里取消IIS的安裝,並重新安裝一次IIS,再進行PHP的ISAPI模塊設置。
一。運行phpmyadmin程序提示“無法載入 mysql 擴展,請檢查 PHP 配置”的解決方法如下:
答:
沒有正確安裝Mysql數據庫,在系統服務中Mysql相關的服務沒有啟動 (請認真閱讀安裝Mysql和php的教程)
二。安裝Discuz!論壇時提示“不支持Mysql數據庫,無法安裝論壇”的解決方法如下:
答:
1,在系統的 system32(C:\windows\system32)目錄下缺少libmysql.dll文件,解決方法是找到php目錄下的libmysql.dll,並將libmysql.dll復制到C:\windows\system32目錄中
2,在C:\windows目錄下的php.ini文件中,沒有將“;extension=php_mysql.dll”中的前面一個“;”去掉,所以不能使用相應功能,解決方法是打開php.ini文件找到
;extension=php_mysql.dll
改成
extension=php_mysql.dll //去掉前面的;使之生效
3,Mysql安裝目錄正確的權限如下:
system 完全控制
Mysql安裝目錄只需要上面兩個權限就可以了,其他的用戶權限全部刪除
重要,還要檢查php.ini文件的權限,檢查復制到system32里面的php文件的權限,檢查php安裝目錄文件夾的權限,至少要有users默認權限;
C盤WINDOWS目錄的TEMP文件夾至少要有USERS組修改級別權限。
強烈建議在新裝的標准版2003系統里面配置!先配置環境安裝程序,安裝程序成功后再做系統安全設置等!
(最后一定要重啟服務器)
如果上述均無效,那么:http://www.jb51.net/softs/26224.html
星外PHP5.2.11自動安裝包(非星外系統也可以安裝) ,比較快速,對於沒有對iis配置過php環境的朋友使用,這個版本是安裝在c盤的,其實自己安裝也是不錯的,一般安裝在d盤等非系統安裝盤。最新的win2003支持較好的是php5.2.12版本,雖然不是最新的也是不錯的。
phpmyadmin報錯:
Fatal error: session_start() [<a href='function.session-start'>function.session-start</a>]: Failed to initialize storage module: files (path: ) in D:\f4jgwy\jgwynet\web\pmbba\libraries\session.inc.php on line 75
解決方法有兩種如下:
1。在報錯的文件里的session start();之前加入如下代碼:ini_set(‘session.save_handler', ‘files'); 。這種方法適合租用空間的用戶使用。
2。在php.ini文件里,顯式指定session的save_path(比如 c:/tmp)然后重啟web服務。如果服務器的管理權限屬於你,那還是這樣改比較方便。
即取消;session.save_path = "/tmp" 的注釋
原因分析:php5一個安全模式的bug,默認session的save_path是系統的臨時目錄,這樣會要校驗權限。
phpMyAdmin - 錯誤
無法在發生錯誤時創建會話,請檢查 PHP 或網站服務器日志,並正確配置 PHP 安裝。
解決方法:
1、嘗試重啟mysql服務即可解決,--無效
2、找到php5.ini文件,查到
session.save_path = "D:\xampp\tmp"
知道session的保存目錄,然后到d:\xampp\tmp目錄下,把所有文件清空,
再次進入phpmyadmin,一切正常。----無效
3、打開我的電腦——系統安裝盤(不錯的話一般都是C盤)——打開WINDOWS文件夾——找到Temp目錄;
右擊打開屬性,點到安全選項,如果沒有你可以在窗口的上邊點開 工具——文件夾選項——查看——將“使用單文件共享(推薦)”前的勾去掉就有了---無效
4、使用phpinfo函數查看您的php安裝情況,並檢查Loaded Configuration 該項配置是否正確,如果該項顯示為none,
重啟服務器或重啟IIS后,全部站點都處於停止狀態,無法自動啟動,需要手工啟動。
解決辦法一:
我的電腦——右鍵——管理——服務和應用程序——服務。找到:
IIS Admin Service
World Wide Web Publishing Service
修改為“自動”。
解決辦法二:
服務器是win 2003的操作系統,IIS重啟或者服務器重啟以后IIS里面的網站服務居然全部停止了,讓人郁悶了老半天,把網站一個個手動啟動了,苦苦思索不得原因,是不是與裝了SERV-U有關系呢?
若是因為按裝了SERV-U7.1.0.2得原因,如何讓網站在重啟機器后自動運行呢?經查詢得知, SERV-U7.1.0.2占用80端口了,進入SERV-U7.1.0.2設置里,關閉自動運行就可以了!
另外,在本地IIS調試網站時也經常遇到重啟IIS后默認網站都停止的情況,可以用命令netstat -anb查看,是不是80端口被占用了,找到占用80端口的進程,把它關閉就可以啟動默認網站了。迅雷就是默認的占用80端口的。
php5isapi.dll 加載失敗。數據是錯誤的。64位windows2003與PHP5不兼容?
在64位windows的IIS啟動對32位IIS的支持:
最后是1則表示啟用對32位的支持,0則表示禁用對32位的支持,當然,這個時候應該是啟動,選1。
然后重啟IIS
net start iisadmin
net start w3svc
mysql_connect() 不支持 請檢查 mysql 模塊是否正確加載
查看/usr/lib/php/modules/里面根本沒有mysql.so
找到Redhat安裝盤,找到Server目錄下的
php-mysql-5.1.6-20.el5.i386.rpm
php-pdo-5.1.6-20.el5.i386.rpm
上載,安裝:
rpm -ivh php-pdo-5.1.6-20.el5.i386.rpm
rpm -ivh php-mysql-5.1.6-20.el5.i386.rpm
再查看so文件:ls /usr/lib/php/modules/
dbase.so ldap.so mysqli.so mysql.so pdo_mysql.so pdo.so pdo_sqlite.so phpcups.so
附錄:
1、檢查apache,mysql,php及其各組件是否正確安裝,服務是否已啟動。
2、查看 /usr/lib/php/modules/ 下 dbase.so ldap.so mysqli.so mysql.so pdo_mysql.so
pdo.so pdo_sqlite.so phpcups.so mysql.so是否存在。
如果不存在:找到Redhat安裝盤,找到Server目錄下的
安裝:
3、在/etc/php.ini中添加
extension=mysql.so
4、重啟httpd和mysqld
phpMyAdmin安裝后訪問出現Warning: require_once(./libraries/common.inc.php)錯誤的解決辦法
安裝好PHPmyAdmin后,在IE里訪問時會出現下面的這種錯誤:
Fatal error: require_once() [function.require]: Failed opening required './libraries/common.lib.php' (include_path='.;C:\php5\pear') in D:\php\phpMyAdmin\index.php on line 36
經過一陣調試終於發現解決方法:
原來phpMyAdmin的安裝目錄的上級目錄權限不夠,這時給上級目錄加上IIS匿名User的“讀取和運行”權限,再打開phpmyadmin頁面,成功!
[注意事項]:
1、不要把phpmyadmin解壓安裝在根目錄,因為這樣匿名用戶就會擁有根目錄的權限。
//-----------------------------------------------------------------------------------------------------------------------------------------------------------
PHP:[url]http://www.php.net[/url]
(1)下載后得到php,解壓至C:php(自行選擇)。
(2)將C:php目錄下的所有dll文件(主要是C:phpext下的dll文件)拷到c:Windowssystem32下,覆蓋已有的dll文件。
(3)將C:PHP目錄下的php.exe、php-win.exe和php.ini-dist三個文件拷到C:Windows下;將php.ini-dist改名為php.ini,然后修改如下部分:
register_globals = Off
將 Off 改成 On ;
extension_dir =
將其路徑指到你的PHP目錄下的ext目錄,如:extension_dir = “C:phpext” ;
;Windows Extensions(需要的項目去掉前面的 ; 號)
;extension=php_gd2.dll 支持GD庫
;extension=php_mbstring.dll 不選用PHPMyAadmin會出紅色提示
;extension=php_mssql.dll 支持MSSQL
;extension=php_mysql.dll 支持MYSQL
(4)配置 IIS 使其支持 PHP
安裝IIS的步驟略去。PHP 支持 CGI 和 ISAPI 兩種安裝模式,推薦使用 ISAPI 模式。
在“控制面板”的“管理工具”中選擇“Internet 服務管理器”,打開 IIS 后停止服務,然后在左側“你需要支持PHP的Web站點”比如“默認Web站點”上單擊右鍵選擇“屬性”,在打開的“ Web 站點屬性”窗口的“ISAPI 篩選器”標簽里找到並點擊“添加”按鈕,在彈出的“篩選器屬性”窗口中的“篩選器名稱”欄中輸入:PHP ,再將可執行文件指向 php5isapi.dll 所在路徑,如:C:phpphp5isapi.dll 。
打開“Web 站點屬性”窗口的“主目錄”標簽,找到並點擊“配置”按鈕,在彈出的“應用程序配置”窗口中找到並點擊“添加”按鈕,在彈出的窗口中新增一個擴展名映射,擴展名為 .php ,單擊“瀏覽”將可執行文件指向 php5isapi.dll 所在路徑,如:C:phpphp5isapi.dll,然后確定即可。
打開“Web 站點屬性”窗口的“文檔”標簽,找到並點擊“添加”按鈕,向默認的 Web 站點啟動文檔列表中添加 index.php 項。您可以將 index.php 升到最高優先級,這樣,訪問站點時就會首先自動尋找並打開 index.php 文檔。
打開“Internet 服務管理器”左邊的“WEB服務擴展”中設置:
ISAPI 擴展 允許
Active Server Pages 允許
設置之后,重新啟動IIS即可。
(5)配置Windows環境變量
在windows環境變量的path變量中添加 c:\php、c:\php\ext 。
(6)測試配置結果
在 IIS 根目錄下新建一個 phpinfo.php ,內容如下:
<? phpinfo(); ?>
打開瀏覽器,輸入:[url]http://localhost/phpinfo.php[/url],將顯示當前服務器所支持 PHP 的全部信息。