《PHP編程:windows平臺中配置nginx+php環境》要點:
本文介紹了PHP編程:windows平臺中配置nginx+php環境,希望對您有用。如果有疑問,可以聯系我們。
PHP編程剛看到nginx這個詞,我很好奇它的讀法(engine x),我的直譯是"引擎x",一般引"擎代"表了性能,而"x"大多出現是表示"xtras(額外的效果)",那么整個詞的意思就是類似"極致效果","額外性能".當然這里不是要來嘮嗑,以上是題外話.
PHP編程 nginx相較于我們熟悉的apache,IIS的優勢,就我淺入淺出的了解,在于"反向代理"和"負載均衡".因此考慮到能夠為Web服務器節省資源,它可以代替apache來提供Web服務.那么上正題了,nginx有這么多優勢,那在windows下如何來配置nginx+php環境?網上看到還是那么多轉載來轉載去的文章.這里就我配置的過程,來介紹一下:
PHP編程1、首先需要準備的應用程序包.
PHP編程nginx:nginx/Windows-1.0.4
php:php-5.2.16-nts-Win32-VC6-x86.zip
RunHiddenConsole:RunHiddenConsole.zip
nginx下php是以FastCGI的方式運行,所以我們下載非線程安全也就是nts的php包.
PHP編程2、安裝與配置.
PHP編程 1)php的安裝與配置.
直接解壓下載好的php包,到D盤wnmp目錄(D:\wnmp),這里把解壓出來的文件夾重命名成php5.進入文件夾修改php.ini-recommended文件為php.ini,并用Editplus或者Notepad++打開來.找到
PHP編程
extension_dir = "./ext"
PHP編程更改為
PHP編程
extension_dir = "D:/wnmp/php5/ext"
PHP編程往下看,再找到
PHP編程
;extension=php_mysql.dll;extension=php_mysqli.dll
PHP編程實際中,可能還要開啟
PHP編程
extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_msql.dll
extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_snmp.dll
extension=php_sockets.dll
extension=php_sqlite.dll
extension=php_xsl.dll
extension=php_zip.dll
PHP編程前面指定了php的ext路徑后,只要把需要的擴展包前面所對應的“;”去掉,就可以了.這里打開php_mysql.dll和php_mysqli.dll,讓php支持mysql.
PHP編程當然不要忘掉很重要的一步就是,把php5目錄下的libmysql.dll文件復制到C:\Windows目錄下,也可以在系統變量里面指定路徑,當然這里我選擇了更為方便的方法^_^.(測試發現不復制也是可以的)
PHP編程到這里,php已經可以支持mysql了.
PHP編程接下來我們來配置php,讓php能夠與nginx結合.找到
PHP編程
;cgi.fix_pathinfo=1
PHP編程我們去掉這里的分號:
PHP編程
cgi.fix_pathinfo=1
PHP編程這一步非常重要,這里是php的CGI的設置.
PHP編程2)nginx的安裝與配置
PHP編程把下載好的nginx-1.0.4的包同樣解壓到D盤的wnmp目錄下,并重命名為nginx.接下來,我們來配置nginx,讓它能夠和php協同工作.進入nginx的conf目錄,打開nginx的配置文件nginx.conf,找到
PHP編程
location / {
root html; #這里是站點的根目錄 index index.html
index.htm;
}
PHP編程將root html;改為root D:/wnmp/www;加上index.php,即:
PHP編程
location / {
root D:/wnmp/www; #這里是站點的根目錄
index index.php index.html index.htm;
}
PHP編程這里需要注意,路徑分隔符請使用/而不要使用Windows中的\以防歧義.
再往下,找到
PHP編程
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
PHP編程先將前面的#去掉,同樣將root html;改為root D:/wnmp/www;.再把標記為紅色的/scripts改為$document_root,這里的$document_root就是指前面root所指的站點路徑,這是改完后的:
PHP編程
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root D:/wnmp/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
PHP編程設定error.log的存放目錄,將#error_log logs/error.log;的#去處,默認error.log是存放在Nginx安裝目錄中logs目錄下.
PHP編程保存配置文件,就可以了.
PHP編程nginx+php的環境就初步配置好了,來跑跑看.我們可以輸入命令:
PHP編程
php-cgi.exe -b 127.0.0.1:9000 -c D:/wnmp/www/php/php.ini
PHP編程來啟動php,并手動啟動nginx(可能不可行).當然也可以利用腳本來實現.
PHP編程首先把下載好的RunHiddenConsole.zip包解壓到nginx目錄內,RunHiddenConsole.exe的作用是在執行完命令行腳本后可以自動關閉腳本,而從腳本中開啟的進程不被關閉.然后來創建腳本,命名為start_nginx.bat,我們在Notepad++里來編輯它:
PHP編程
@echo off
REM Windows 下無效
REM set PHP_FCGI_CHILDREN=5
REM 每個進程處理的最大請求數,或設置為 Windows 環境變量
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting PHP FastCGI...
RunHiddenConsole D:/phpsetup/php-5.4.45-nts-Win32-VC9-x86/php-cgi.exe -b 127.0.0.1:9000 -c D:/phpsetup/php-5.4.45-nts-Win32-VC9-x86/php.ini
echo Starting nginx...
RunHiddenConsole D:/phpsetup/nginx-1.6.0/nginx.exe -p D:/phpsetup/nginx-1.6.0
PHP編程再另外創建一個名為stop_nginx.bat的腳本用來關閉nginx:
PHP編程
@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit
PHP編程這樣,我們的服務腳本也都創建完畢了.雙擊start_nginx.bat,再看看進程管理器是不是有兩個nginx.exe的進程和一個php-cgi.exe的進程呢?
PHP編程這樣nginx服務就啟動了,而且php也以fastCGI的方式運行了.
到站點目錄下,新建一個phpinfo.php的文件,在里面編輯
PHP編程
<?php
phpinfo();
?>
PHP編程保存后,打開瀏覽器輸入http://localhost/phpinfo.php,如果看到
PHP編程就說明,nginx+php的環境已經配置好了,呵呵~
PHP編程Nginx 403 forbidden的解決辦法
PHP編程常見的,引起nginx 403 forbidden有二種原因,一是缺少索引文件,二權限問題.
PHP編程1、缺少index.html或者index.php文件
PHP編程代碼如下:
PHP編程
server {
listen 80;
server_name localhost;
index index.php index.html;
root /var/www;
}
PHP編程如果在/var/www下面沒有index.php,index.html的時候,直接訪問域名,找不到文件,會報403 forbidden.
例如:你訪問www.test.com而這個域名,對應的root指定的索引文件不存在.
PHP編程權限問題
PHP編程對于PHP而言,如果nginx用戶沒有web目錄的權限,則會導致該錯誤.
解決辦法:修改web目錄的讀寫權限,或者是把nginx的啟動用戶改成目錄的所屬用戶,重起一下就能解決. 如:
代碼如下(Linux下):
PHP編程
chown -R nginx_user:nginx_user /htdocs
維易PHP培訓學院每天發布《PHP編程:windows平臺中配置nginx+php環境》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8319.html