Nginx+php+fastcgi在win7下的配置


首先裝載php
1、從www.php.net上下載php對應版本
2、解壓之后放到c盤下(其實放哪無所謂,Apache會有配置指向,但是Nginx不用)
3、因為用的5.3.17版本,已經有了php-cgi.exe這個,不用做其他的事情所以開始更改php的配置,先把php.ini-development這個文件更名為php.ini,也有的版本ini后面跟的是別的,都改成.ini
4、打開php.ini文件,修改:
配置:
extension_dir = "這里寫你的ext文件夾路徑"     ;這個路徑是指向擴展庫的路徑
upload_tmp_dir = "這里寫你的上傳緩存目錄"     ;上傳圖片之類的緩存這里
session.save_path = "這里寫你的session緩存目錄"    ;這個是以文件形式儲存sission,如果以數據庫存儲session則需要另外配置
 
打開以下擴展:
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
extension=php_pdo_sqlite.dll
extension=php_xmlrpc.dll
 
定義所在時區(本人定義的是上海時區):
date.timezone = Asia/Shanghai
 
由於Nginx要求cgi方式的php,還要修改以下配置
enable_dl = On
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1  
 
配置Nginx:
1、從 http://nginx.org上下載Nginx,總之從官網上下個,不管官網是不是改地址了,貌似1.3.7版本沒有分32位還是64位。
2、解壓之后放c盤下(放別處應該也成,習慣了……)
3、打開conf,更改nginx.conf
打開log目錄:
error_log logs/error.log;
更改其他配置
server {
        listen       8080;#因為裝了Apache已經占用了80接口
        server_name  localhost;
        charset utf-8;#默認文件編碼
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            root   d:/nginxWeb;#這里改成你自己的虛擬目錄,注意!Nginx1.3.7及以下版本不支持文件路徑中間有空格也不支持中文!!!這個以上的版本不知道會不會支持,不過這個以下是不支持的……雖然Apache支持啊……
            index  index.html index.htm index.php;#注意這里添加了index.php,如果沒有添加這個有可能報403錯誤,這個是win下的,linux或者其他系統是否會有此問題未知。
autoindex on;#如果文件不存在,列出目錄樹結構
        }
        #error_page  404              /404.html;
 
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
 
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;#fastcgi監聽的端口,與php的cgi啟動時指定的要一致
            fastcgi_index  index.php;#默認首頁
            fastcgi_param  SCRIPT_FILENAME  D:/nginxWeb$fastcgi_script_name;#啟動路徑,這里只需要將“D:/nginxWeb”這部分改為你的安裝路徑就可以了
            include        fastcgi_params;
        }
 
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
 
運行:
1、先要運行起php的cgi,由於本人用的win7系統,所以cmd先進的c盤(之前全扔c盤這就簡單了~),訪問到php路徑中,輸入
php-cgi.exe -b 127.0.0.1:9000
注意這里的-b 127.0.0.1:9000是指定cgi的監聽端口,與上文中的Nginx配置要一致,如果有其他配置不記得之前php-cgi是那個端口,可以使用php-cgi.exe -h命令來查看配置(查看-b 后面的<address:port>)。想要查看所有被監聽的端口則輸入netstat -na
 
2、運行Nginx
另開啟一個終端,訪問到nginx文件夾下,輸入nginx.exe
 
保持兩個終端不關閉,訪問由瀏覽器訪問虛擬目錄下的文件。
 
運行后自動關閉cmd的方法:
1、下載RunHiddenConsole.exe(http://redmine.lighttpd.net/attachments/660/RunHiddenConsole.zip)
2、創建start_php.bat,來啟動php,文件內容如下:
@echo off
echo Starting PHP FastCGI...
RunHiddenConsole.exe d:\php\php-cgi.exe -b 127.0.0.1:9000 -c d:\php\php.ini
3、創建stop_nginx.bat,來關閉php和nginx進程,文件內容如下:
@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit
 
相關問題:
1、403錯誤:在nginx.conf中的index配置未加入index.php是導致403錯誤的其中一個原因
2、cmd中運行Nginx.exe產生錯誤可能是Nginx的路徑中有中文、特殊符號、空格——雖然windows允許這樣命名,但是nginx會報錯(如之前吐槽的,Apache可以,為什么Apache要把精力放在允許空格和中文作路徑上而不是改善其他的啊……費解),還有可能是Nginx的虛擬路徑中存儲了中文名稱的文件,也可能導致nginx無法運行。
3、Nginx可以運行並並且解析HTML但是無法解析PHP,這個時候要看php-cgi.exe是否起來了,還要看nginx.conf中的監聽端口和php-cgi的監聽端口是否一致,如同上文配置中寫到的,有很多方法查看。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM