Windows下Nginx + PHP配置_Windows教程
本文是我在 Windows XP 安裝中 Nginx 和 PHP5.2 的步驟。
PHP5配置
安裝PHP5,如何連接mysql等不是本文重點。假設php5已經安裝到c:php5目錄下. 本文著重在Nginx的基本安裝及其于PHP的連接。這里僅僅提及設置php.ini的一項:
; CGI 設置
cgi.fix_pathinfo = 1
; CGI 設置 cgi.fix_pathinfo = 1
修改 php.ini,設置 cgi.fix_pathinfo = 1,這非常重要,PHP 會修正 SCRIPT_FILENAME 為真實的文件地址,否則 PHP 將無法找到需要處理的 php 文件。
配置 PHP FastCGI
Nginx 需要和 FastCGI Server 配合才能處理請求。
先說FastCGIServer如何運行,有兩種方式運行 PHP FastCGI Server:
一種就是使用 PHP 內置的 FastCGI 管理器:
C:/php5/php-cgi.exe -b 127.0.0.1:9000 -c C:/php5/php.ini
C:/php5/php-cgi.exe -b 127.0.0.1:9000 -c C:/php5/php.ini
另外一種方式是使用第三方工具:
比如 PHP-FPM 、cgi-fcgi 等。顯然!要在 Windows 中使用這些工具是件極其痛苦的事情,你可能需要 Cygwin 之類的東西才行,的確有人這么做了,雖然我覺得那是自尋煩惱。
再說nginx.conf關于FastCgi的連接配置
location ~ .php$ {
root html;
# 連接到本機 9000 端口,這里的端口是指 PHP FastCGI Server 開啟的端口,
# 請與 php-cgi.exe 開啟的端口保持一致
# 當 Nginx 收到 php 文件的請求時,會自動轉發到 PHP FastCGI Server
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# Nginx 默認是不支持 CGI PATH_INFO,SCRIPT_NAME 的值也不標準(糅合了 PATH_INFO)
# 下面的兩行指令,可以從 SCRIPT_NAME 中剝離出 PATH_INFO
fastcgi_split_path_info ^(.+.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
# 包含另一個配置文件 fastcgi_params
include fastcgi_params;
}
location ~ .php$ { root html; # 連接到本機 9000 端口,這里的端口是指 PHP FastCGI Server 開啟的端口, # 請與 php-cgi.exe 開啟的端口保持一致 # 當 Nginx 收到 php 文件的請求時,會自動轉發到 PHP FastCGI Server fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # Nginx 默認是不支持 CGI PATH_INFO,SCRIPT_NAME 的值也不標準(糅合了 PATH_INFO) # 下面的兩行指令,可以從 SCRIPT_NAME 中剝離出 PATH_INFO fastcgi_split_path_info ^(.+.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; # 包含另一個配置文件 fastcgi_params include fastcgi_params; }
其他可能的配置修改(可選)
# 默認開啟的進程數
worker_processes 1;
- 相關鏈接:
- 教程說明:
Windows教程-Windows下Nginx + PHP配置
。