最近一客戶找主機(jī)買云服務(wù)器的時候說網(wǎng)站PHP運(yùn)行不了,主機(jī)吧經(jīng)過查看原來是他的IIS里并沒有添加PHP擴(kuò)展,這里主機(jī)吧給大家找了個教程,希望可以幫助大家如何處理IIS無法正常運(yùn)行PHP的情況。
第一步:選擇和下載PHP發(fā)行包
根據(jù)所用 web 服務(wù)器選擇合適的版本,PHP下載地址(可閱讀官網(wǎng)下載頁中的側(cè)欄Which version do I choose?)
我的阿里云服務(wù)器系統(tǒng)是64位,用的是IIS,所以選擇PHP 5.6 (5.6.31)VC11 x64 Non Thread Safe
PHP官網(wǎng)上對PHP的安裝包目錄有詳細(xì)的介紹,點(diǎn)開鏈接即可查看;
第二步:修改PHP.ini文件
- extension_dir = <指向擴(kuò)展庫目錄的路徑> – extension_dir 需要指向存放 PHP 擴(kuò)展庫文件的目錄??梢允墙^對路徑(如 “C:\PHP\ext”)或相對路徑(如 “.\ext”)。在 php.ini 文件中要加載的擴(kuò)展庫都必須在 extension_dir 所指定的目錄之中。
- extension = xxxxx.dll – 對每個需要激活的擴(kuò)展,都需要一行相應(yīng)的 “extension=” 語句來說明 PHP 啟動時加載 extension_dir 目錄下的哪些擴(kuò)展。
- log_errors = On – PHP 有錯誤日志的功能可以將錯誤報告發(fā)送到一個文件中,或者系統(tǒng)服務(wù)中(例如系統(tǒng)日志),與下面的 error_log 指令配合工作。在 IIS 下運(yùn)行時,log_errors 應(yīng)被激活,并且配合有效的 error_log。
- error_log = <指向錯誤日志文件的路徑> – error_log 需要指向一個具有絕對或相對路徑的文件名用于記錄 PHP 的錯誤日志。Web 服務(wù)器需要對此文件有可寫權(quán)限。最常用的位置是各種臨時目錄,例如 “C:\inetpub\temp\php-errors.log”。
- cgi.force_redirect = 0 – 在 IIS 下運(yùn)行時需要關(guān)閉此項指令。這是個在許多其它 web 服務(wù)器中都需要激活的目錄安全功能,但是在 IIS 下如果激活則會導(dǎo)致 PHP 引擎在 Windows 中出錯。
- cgi.fix_pathinfo = 1 – 此指令可以允許 PHP 遵從 CGI 規(guī)則訪問真實(shí)路徑信息。IIS 的 FastCGI 實(shí)現(xiàn)需要激活此指令。
- fastcgi.impersonate = 1 – IIS 下的 FastCGI 支持模擬呼叫用戶方安全令牌的能力。這使得 IIS 可以定義請求方的安全上下文。
- fastcgi.logging = 0 – FastCGI 日志在 IIS 下應(yīng)被關(guān)閉。如果激活,則任何類的任何消息都被 FastCGI 視為錯誤條件從而導(dǎo)致 IIS 產(chǎn)生 HTTP 500 錯誤。
- session存儲路徑,如:session.save_path = “d:\server\web\session” (這里寫一個保存session的路徑)
配置完成后,將php.ini拷貝一份放到c:\windows下。在win7的IIS7上配置php時,并不需要把php.ini和相關(guān)文件拷到系統(tǒng)目錄下了。
第三步:設(shè)置IIS(確保iis上安裝了cgi模塊)
- 按以下示例在 php.ini 文件中配置 針對 CGI- 和 FastCGI- 的指令:
fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0