php5nginx
⑴ nginx下如何安裝php
進入php源程序目錄中的ext目錄中,這里存放著各個擴展模塊的源代碼,選擇你需要的模塊,比如curl模塊:cd
curl
執行phpize生成編譯文件,phpize在PHP安裝目錄的bin目錄下
/usr/local/php5/bin/phpize
運行時,可能會報錯:Cannot
find
autoconf.
Please
check
your
autoconf
installation
and
the
$PHP_AUTOCONF
environment
variable
is
set
correctly
and
then
rerun
this
script.,需要安裝autoconf:
yum
install
autoconf(RedHat或者CentOS)、apt-get
install
autoconf(Ubuntu
Linux)
/usr/local/php5/bin/php
-v
執行這個命令時,php會去檢查配置文件是否正確,如果有配置錯誤,
這里會報錯,可以根據錯誤信息去排查!
⑵ 如何搭建Nginx+PHP環境
1、首先需要准備的應用程序包。
nginx:nginx/Windows-1.0.4
php:php-5.2.16-nts-Win32-VC6-x86.zip (nginx下php是以FastCGI的方式運行,所以我們下載非線程安全也就是nts的php包)
(還會用到)RunHiddenConsole:RunHiddenConsole.zip
2、安裝與配置。
1)php的安裝與配置。
直接解壓下載好的php包,到D盤wnmp目錄(D:\wnmp),這里把解壓出來的文件夾重命名成php5。進入文件夾修改php.ini-recommended文件為php.ini,並用Editplus或者Notepad++打開來。找到
extension_dir = "./ext"
更改為
extension_dir = "D:/wnmp/php5/ext"
往下看,再找到
;extension=php_mysql.dll
;extension=php_mysqli.dll
前面指定了php的ext路徑後,只要把需要的擴展包前面所對應的「;」去掉,就可以了。這里打開php_mysql.dll和php_mysqli.dll,讓php支持mysql。當然不要忘掉很重要的一步就是,把php5目錄下的libmysql.dll文件復制到C:\Windows目錄下,也可以在系統變數裡面指定路徑,當然這里我選擇了更為方便的方法^_^。
到這里,php已經可以支持mysql了。
接下來我們來配置php,讓php能夠與nginx結合。找到
;cgi.fix_pathinfo=1
我們去掉這里的封號。
cgi.fix_pathinfo=1
這一步非常重要,這里是php的CGI的設置。
2)nginx的安裝與配置。
把下載好的nginx-1.0.4的包同樣解壓到D盤的wnmp目錄下,並重命名為nginx。接下來,我們來配置nginx,讓它能夠和php協同工作。進入nginx的conf目錄,打開nginx的配置文件nginx.conf,找到
location / {
root html;#這里是站點的根目錄
index index.html index.htm;
}
將root html;改為root D:/wnmp/www;
再往下,找到
復制代碼
# 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;
#}
復制代碼
先將前面的「#」去掉,同樣將root html;改為root D:/wnmp/www;。再把標記為紅色的/scripts改為「$document_root」,這里的「$document_root」就是指前面「root」所指的站點路徑,這是改完後的:
復制代碼
# 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;
}
復制代碼
保存配置文件,就可以了。
nginx+php的環境就初步配置好了,來跑跑看。我們可以輸入命令
來啟動php,並手動啟動nginx,當然也可以利用腳本來實現。
首先把下載好的RunHiddenConsole.zip包解壓到nginx目錄內,RunHiddenConsole.exe的作用是在執行完命令行腳本後可以自動關閉腳本,而從腳本中開啟的進程不被關閉。然後來創建腳本,命名為「start_nginx.bat」,我們在Notepad++里來編輯它
復制代碼
@echo off
REM Windows 下無效
REM set PHP_FCGI_CHILDREN=5
REM 每個進程處理的最大請求數,或設置為 Windows 環境變數
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting PHP FastCGI...
RunHiddenConsole D:/wnmp/php5/php-cgi.exe -b 127.0.0.1:9000 -c D:/wnmp/php5/php.ini
echo Starting nginx...
RunHiddenConsole D:/wnmp/nginx/nginx.exe -p D:/wnmp/nginx
復制代碼
再另外創建一個名為stop_nginx.bat的腳本用來關閉nginx
@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit
做好後,是這樣的
這樣,我們的服務腳本也都創建完畢了。雙擊start_nginx.bat看看進程管理器是不是有兩個nginx.exe的進程和一個php-cgi.exe的進程呢?
這樣nginx服務就啟動了,而且php也以fastCGI的方式運行了。
到站點目錄下,新建一個phpinfo.php的文件,在裡面編輯
<?php
phpinfo();
?>
保存後,打開瀏覽器輸入「http://localhost/phpinfo.php」,如果看到
就說明,nginx+php的環境已經配置好了,呵呵~
⑶ Thinkphp5項目在nginx伺服器部署
1,切換到nginx的配置目錄,找到nginx.conf文件
cd /usr/local/nginx/conf
vim nginx.conf
2,如果是單項目部署的話,只需要在nginx.conf文件裡面加上以下
server{
listen 80;
# 域名,本地測試可以使用127.0.0.1或localhost
server_name www.zhangc.cn;
# php項目根目錄
root /home/data-www/blog;
location /{
# 定義首頁索引文件的名稱
index index.php index.html index.htm;
# 影藏入口文件
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
try_files $uri $uri/ /index.php?$query_string;
}
# PHP 腳本請求全部轉發到 FastCGI處理. 使用FastCGI協議默認配置.
# Fastcgi伺服器和程序(PHP)溝通的協議
.location ~ .*\.php${
# 設置監聽埠
fastcgi_pass 127.0.0.1:9000;
# 設置nginx的默認首頁文件
fastcgi_index index.php;
# 設置腳本文件請求的路徑
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
# 引入fastcgi的配置文件
include fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
try_files $fastcgi_script_name =404;
}
}
3,如果多項目部署,就需要配置vhost
第一步:編輯nginx.conf文件,在最後加上 include vhost/*.conf;
第二步:進入vhost文件夾,創建 域名.conf 文件,如創建一個:quanma.meyat.com.conf
第三步:編輯quanma.meyat.com.conf文件,內容如下:
server
{
listen 80;
server_name quanma.meyat.com;
index index.html index.htm index.php default.html default.htm default.php;
root /data/wwwroot/default/quanma/public/;
#error_page 404 /404.html;
location / {
index index.html index.php;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
try_files $uri $uri/ /index.php?$query_string;
}
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
#try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
try_files $fastcgi_script_name =404;
#include fastcgi.conf;
#include pathinfo.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
# Disallow access to .ht, .svn, .bzr, .git, .hg, .cvs directories
location ~ /\.(ht|svn|bzr|git|hg|cvs) {
deny all;
}
#access_log /date/nginx/bmp.com.conf/access.log main;
}
⑷ Ubuntu14.04 安裝nginx+php5-fpm 後訪問php頁面空白,怎麼解決
具體看下你機子上 php-fpm 是怎樣運行的
ss --unix --all | grep php
依照上面命令的輸出修改 配置文件中對應 server {} 中的 fastcgi_pass。其實吧,你真的想要了解清楚,你可以去後盾人學習資料,那裡會給你不錯的答復
⑸ XP系統如何安裝和nginx和PHP5.3.5。
從網站下載WINDOWS版本的php壓縮包或安裝包
(如果是安裝包,可以直接安裝,則以下操作基本上可以忽略。但為了更好的安全性,建議採用壓縮包自己安裝配置有關參數)
2. 將下載的php5.0壓縮包解壓到指定位置,如為C:\PHP5
3. 在c:\php5文件夾中,用記事本打開文件php.ini-dist,修改如下內容後「另存為...」php.ini文件
(1)查找到safe_mode = 段落,將safe_mode = Off修改為safe_mode = On
(2)查找到expose_php = On段落,將expose_php = On修改為expose_php = Off
(3)查找到display_errors = On段落,將display_errors = On修改為display_errors = Off
(4)查找到extension_dir = 段落,設置動態庫擴展的路徑,如extension_dir = c:\php5\ext
(5)查找到 ; cgi.force_redirect = 1段落,修改為 cgi.force_redirect = 0
提示:(4)和(5)是必須做的。記著要另存為php.ini
4. 將編輯好的php.ini文件剪切到Windows安裝文件夾下(如:C:\Winnt 或 C:\Windows)
5. 在IIS中,選擇要使用PHP的站點,右鍵菜單中選擇「屬性」,選擇「主目錄」標簽,在該界面中點「配置」,添加或重新編輯php擴展的「應用程序擴展名映射」,可執行文件選擇為C:\php5\php5isapi.dll,擴展名為php,確定應用後退出IIS配置
6. 停止IIS的WEB站點,並重新啟動該站點。
提示:如果是Windows 2003,應增加WEB擴展,將PHP置為允許
⑹ 如何在nginx安裝thinkphp5並且開啟路由
上面的回答純屬搞笑!安裝thinkphp就不說了,自己去官網找
由於nginx不支持pathinfo,導致TP5用路由訪問時會報404。
解決辦法,找到nginx下虛擬主機的配置文件,一般是在/usr/ local/ nginx/ conf/ vhost/ 域名.conf
在中間加上一段代碼
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
⑺ 本地Apache PHP5 配置,上傳空間是Nginx,本地電腦生成的偽靜態文件上傳到Nginx伺服器上能正常訪問嗎
不太可能會正常訪問。apache 和 nginx 都是提供一種外部訪問的軟體,一般是只能開一個的,要麼是apache,要麼是nginx,當然,我沒有進行過測試,具體的效果還需要樓主詳細的進行測試。
另,如果訪問的話,nginx是一定要開著的,這個一定要注意,要不然很可能開著apache,結果把nginx給關了!
無論是apache還是nginx都是可以正常訪問的,偽靜態的網站沒有太大的特殊性,只需要把偽靜態配置好就沒有問題,你可以找伺服器的提供商問問需不需要單獨配置偽靜態,這樣就可以了!
⑻ Ubuntu14.04 安裝nginx+php5-fpm 後訪問php頁面空白,怎麼解決
先看位置對不對,可能nginx解析的地址不對
再看日誌
我估計,你是nginx配置錯了!
測試方法
比如再你訪問的頁面裡面隨便寫點東西 不過要確定不是404 如果是404 你還是乖乖去看下nginx配置到哪了。。。。
要注意nginx的訪問許可權
⑼ nginx php5 什麼也不輸出
1.修改php-fpm.conf中配置 沒有則增加
catch_workers_output = yes
error_log = log/error_log
2.修改php.ini中配置,沒有則增加
log_errors = On
error_log = "/usr/local/lnmp/php/var/log/error_log"
error_reporting=E_ALL&~E_NOTICE
3.重啟php-fpm,
當PHP執行錯誤時就能看到錯誤日誌在"/usr/local/lnmp/php/var/log/error_log"中了
請注意:
1. php-fpm.conf 中的php_admin_value[error_log] 參數 會覆蓋php.ini中的 error_log 參數
所以確保你在phpinfo()中看到的最終error_log文件具有可寫許可權並且沒有設置php_admin_value[error_log] 參數,否則錯誤日誌會輸出到php-fpm的錯誤日誌里。
2.找不到php.ini位置,使用php的phpinfo()結果查看
3.如何修改PHP錯誤日誌不輸出到頁面或屏幕上
修改php.ini
display_errors = off //不顯示錯誤信息(不輸出到頁面或屏幕上)
log_errors = on //記錄錯誤信息(保存到日誌文件中)
error_reporting = E_ALL //捕獲所有錯誤信息
error_log = //設置日誌文件名
程序中修改以上配置
ini_set("display_errors",0)
ini_set("error_reporting",E_ALL); //這個值好像是個PHP的常量
ini_set("error_log","<日誌文件名>")
ini_set("log_errors",1);
4.如何將php的錯誤日誌輸出到nginx的錯誤日誌里
在PHP 5.3.8及之前的版本中,通過FastCGI運行的PHP,在用戶訪問時出現錯誤,會首先寫入到PHP的errorlog中
如果PHP的errorlog無法寫入,則會將錯誤內容返回給FastCGI介面,然後nginx在收到FastCGI的錯誤返回後記錄到了nginx的errorlog中
在PHP 5.3.9及之後的版本中,出現錯誤後PHP只嘗試寫入PHP的errorlog中,如果失敗則不會再返回到FastCGI了,錯誤日誌會輸出到php-fpm的錯誤日誌里。
所以如果想把php錯誤日誌輸出到nginx錯誤日誌,需要使用php5.3.8之前的版本,並且配置文件中php的error_log對於php worker進程不可寫
