當前位置:首頁 » 編程語言 » nginxphp55

nginxphp55

發布時間: 2022-10-19 15:47:00

㈠ nginx php文件不能正常訪問.

一般nginx默認配置中會是這個樣子的。這里有一個SCRIPT_FILENAME變數,但是fastcgi_params這個文件中是不包含該變數的,改變數的定義實際上是在fastcgi.conf文件中。

實際上可以把配置修改成如下的配置。

location~.php${
root/usr/share/nginx/html;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
fastcgi_intercept_errorson;
includefast_cgi.conf;

#可以增加rewrite,也可以不增加。
}

按如上的配置,如果訪問127.0.0.1:9000/a.php,則實際上根據root指令和fast_cgi.conf配置,nginx會通過fast_pass指令訪問/usr/share/nginx/html/a.php這個文件。

記得用root指令,指定站點的文檔根路徑。

㈡ nginx 怎麼修改php配置

####nginx配置虛擬機,此配置是支持tp框架pathinfo路徑的
server{
#監聽埠
listen 80;
#網站域名
server_name web.api55.com;
#默認索引頁
index index.php;
#網站目錄
root /usr/local/nginx/html/api55;
location ~ .+\.php($|/) {
set $script $uri;
set $path_info "/";
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php?IF_REWRITE=1;
include fastcgi.conf;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root/$script;
fastcgi_param SCRIPT_NAME $script;
}
}

####負載均衡服務配置
upstream web{
server 192.168.67.135 weight=1 max_fails=3 fail_timeout=20s;
server 192.168.67.136 weight=1 max_fails=3 fail_timeout=20s;
}
####刪除原來web.api53.com里的server段里的location段,增加這一段location
location /{
proxy_pass http://web;
}

###################nginx轉發php文件給apache
# 動態文件.php請求轉發給後端Apache
location ~ .php$ {
# 向後端伺服器發起請求時添加指定的header頭信息
proxy_set_header Host $http_host;
# 向後端伺服器發送真實 IP
proxy_set_header X-Real-IP $remote_addr;
# 讓後端如php能直接通過變數獲取真實IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
# nginx找不到文件時,轉發請求給後端Apache
location @proxy {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}

㈢ windows下nginx伺服器下怎麼裝php

你可以使用護衛神.nginx大師,一鍵可以安裝nginx+php

雲伺服器如何配置nginx支持php

[root@redhat7 ~]# wget http://am1.php.net/get/php-7.1.2.tar.gz/from/this/mirror
[root@redhat7 ~]# tar xzvf php-7.1.2.tar.gz
[root@redhat7 ~]# cd php-7.1.2/
[root@redhat7 ~]# ./configure --prefix=/usr/local/php --enable-fpm
[root@redhat7 php-7.1.2]# make&&make install
查看是否成功編譯安裝PHP
[root@redhat7 php-7.1.2]# php -v
PHP 7.1.2 (fpm-fcgi) (built: Apr 14 2017 20:21:53)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

編譯安裝完成後PHP不具備配置文件php.ini,此時只需復制php.ini-proction到 /usr/local/lib/php.ini即可,php.ini文件一般在/usr/local/lib/和/etc目錄下

[root@localhost php-7.1.2]# cp php.ini-proction /usr/local/lib/php.ini
[root@redhat7 php]# /usr/local/php/sbin/php-fpm
[14-Apr-2017 20:59:49] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)
[14-Apr-2017 20:59:49] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'
[14-Apr-2017 20:59:49] ERROR: FPM initialization failed
啟動php-fpm發現缺乏配置文件/usr/local/php/etc/php-fpm.conf
此時只需復制php-fpm的配置文件在安裝php時提供的配置文件的模版/usr/local/php/etc/php-fpm.conf.default到相應/usr/local/php/etc/php-fpm.conf即可

[root@redhat7 etc]# /usr/local/php/sbin/php-fpm
[14-Apr-2017 21:14:32] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/﹡.conf' from /usr/local/php/etc/php-fpm.conf at line 125.
[14-Apr-2017 21:14:32] ERROR: No pool defined. at least one pool section must be specified in config file
[14-Apr-2017 21:14:32] ERROR: failed to post process the configuration
[14-Apr-2017 21:14:32] ERROR: FPM initialization failed

[root@redhat7 etc]# cp php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

[root@redhat7 etc]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[root@redhat7 etc]# /etc/init.d/php-fpm
[14-Apr-2017 21:23:02] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[14-Apr-2017 21:23:02] ERROR: FPM initialization failed
[root@redhat7 etc]# netstat -nldp|grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3721/php-fpm: maste
[root@redhat7 php-7.1.2]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# chmod a+x /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# ll /etc/init.d/php-fpm
-rwxr-xr-x 1 root root 2401 4月 14 21:26 /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# /etc/init.d/php-fpm start
Starting php-fpm [14-Apr-2017 21:28:09] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[14-Apr-2017 21:28:09] ERROR: FPM initialization failed
failed
[root@redhat7 php-7.1.2]# netstat -nldp |grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3721/php-fpm: maste
[root@redhat7 php-7.1.2]# kill 3721
[root@redhat7 php-7.1.2]# netstat -nldp |grep 9000
[root@redhat7 php-7.1.2]# /etc/init.d/php-fpm start
Starting php-fpm done
[root@redhat7 php-7.1.2]# service php-fpm status
php-fpm (pid 3927) is running...
[root@redhat7 php-7.1.2]# chkconfig --add php-fpm
[root@redhat7 php-7.1.2]# chkconfig php-fpm --level 345 on

配置nginx支持PHP
修改nginx的配置文件,支持php文件的解析,找到location的添加位置,在後面添加下面這個location
location ~ .php$ {
root /usr/share/nginx/html; #指定php的根目錄
fastcgi_pass 127.0.0.1:9000;#php-fpm的默認埠是9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

㈤ PHP 系統臨時目錄問題

這個不用這么仔細的刨根問底的~
這個名字只是用來存放臨時文件的。當這個上傳請求 完畢後 這個文件就自動刪除了。所以 這個 tmp_name 只管會用就行了。

㈥ 如何正確配置Nginx + PHP

對很多人而言,配置Nginx+PHP無外乎就是搜索一篇教程,然後拷貝粘貼。聽上去似乎也沒什麼問題,可惜實際上網路上很多資料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷貝粘貼,早晚有一天會為此付出代價。
假設我們用PHP實現了一個前端控制器,或者直白點說就是統一入口:把PHP請求都發送到同一個文件上,然後在此文件里通過解析「REQUEST_URI」實現路由。
此時很多教程會教大家這樣配置Nginx+PHP:
server {
listen 80;
server_name foo.com;
root /path;
location / {
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite . /index.php last;
}
}
location ~ .php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /path$fastcgi_script_name;

fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
這裡面有很多錯誤,或者說至少是壞味道的地方,大家看看能發現幾個。

我們有必要先了解一下Nginx配置文件里指令的繼承關系:Nginx配置文件分為好多塊,常見的從外到內依次是「http」、「server」、「location」等等,預設的繼承關系是從外到內,也就是說內層塊會自動獲取外層塊的值作為預設值(有例外,詳見參考)。
參考:UNDERSTANDING THE NGINX CONFIGURATION INHERITANCE MODEL

讓我們先從「index」指令入手吧,在問題配置中它是在「location」中定義的:
location / {
index index.html index.htm index.php;
}
一旦未來需要加入新的「location」,必然會出現重復定義的「index」指令,這是因為多個「location」是平級的關系,不存在繼承,此時應該在「server」里定義「index」,藉助繼承關系,「index」指令在所有的「location」中都能生效。
參考:Nginx Pitfalls

接下來看看「if」指令,說它是大家誤解最深的Nginx指令毫不為過:
if (!-e $request_filename) {
rewrite . /index.php last;
}
很多人喜歡用「if」指令做一系列的檢查,不過這實際上是「try_files」指令的職責:
try_files $uri $uri/ /index.php;
除此以外,初學者往往會認為「if」指令是內核級的指令,但是實際上它是rewrite模塊的一部分,加上Nginx配置實際上是聲明式的,而非過程式的,所以當其和非rewrite模塊的指令混用時,結果可能會非你所願。
參考:IfIsEvil and How nginx 「location if」 works

下面看看「fastcgi_params」配置文件:
include fastcgi_params;
Nginx有兩份fastcgi配置文件,分別是「fastcgi_params」和「fastcgi.conf」,它們沒有太大的差異,唯一的區別是後者比前者多了一行「SCRIPT_FILENAME」的定義:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
注意:$document_root 和 $fastcgi_script_name 之間沒有 /。
原本Nginx只有「fastcgi_params」,後來發現很多人在定義「SCRIPT_FILENAME」時使用了硬編碼的方式,於是為了規范用法便引入了「fastcgi.conf」。
不過這樣的話就產生一個疑問:為什麼一定要引入一個新的配置文件,而不是修改舊的配置文件?這是因為「fastcgi_param」指令是數組型的,和普通指令相同的是:內層替換外層;和普通指令不同的是:當在同級多次使用的時候,是新增而不是替換。換句話說,如果在同級定義兩次「SCRIPT_FILENAME」,那麼它們都會被發送到後端,這可能會導致一些潛在的問題,為了避免此類情況,便引入了一個新的配置文件。
參考:FASTCGI_PARAMS VERSUS FASTCGI.CONF – NGINX CONFIG HISTORY
此外,我們還需要考慮一個安全問題:在PHP開啟「cgi.fix_pathinfo」的情況下,PHP可能會把錯誤的文件類型當作PHP文件來解析。如果Nginx和PHP安裝在同一台伺服器上的話,那麼最簡單的解決方法是用「try_files」指令做一次過濾:
try_files $uri =404;
參考:Nginx文件類型錯誤解析漏洞

依照前面的分析,給出一份改良後的版本,是不是比開始的版本清爽了很多:
server {
listen 80
server_name foo.com;
root /path;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php;
}
location ~ .php$ {
try_files $uri =404;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
}
}
實際上還有一些瑕疵,主要是「try_files」和「fastcgi_split_path_info」不夠兼容,雖然能夠解決,但方案比較醜陋,具體就不多說了,有興趣的可以參考問題描述。
補充:因為「location」已經做了限定,所以「fastcgi_index」其實也沒有必要.

㈦ nginx與php怎麼結合在一起

nginx配置:

server{
#...其他location略
location~*.php${
fastcgi_pass127.0.0.1:9000;
}
}

PHP的fastcgi監聽9000埠

php-cgi -b 9000

㈧ mac 許可權的nginx怎麼支持php

Mac OSX下配置nginx和php
首先安裝nginx, 其次需要HomeBrew, 按照官網說明安裝
然後安裝PHP,以下的命令在終端執行:

更新下brew的庫,加入php支持:

brew tap homebrew/pes
brew tap josegonzalez/homebrew-php
然後執行:

# 需要mysql,就把--without-mysql改為--with-mysql
brew install --without-apache --with-fpm --without-mysql php55
執行上面的命令後,brew就開始下載php源碼並編譯安裝,大概幾分鍾時間。
安裝完成後,配置php/bin到終端環境(未驗證,貌似跟mac本身自帶的php有沖突?):

#這一步成不成功沒關系,這步的目的只是讓終端可以執行PHP命令,不影響web伺服器使用
echo 'export PATH="$(brew --prefix josegonzalez/php/php55)/bin:$PATH"' >> ~/.bash_profile
設置隨系統自動啟動:

mkdir -p ~/Library/LaunchAgents
#注意文件homebrew.mxcl.php55.plist的路徑,需要根據實際情況改成自己的目錄和文件名
cp /usr/local/Cellar/php55/5.5.13/homebrew.mxcl.php55.plist ~/Library/LaunchAgents/
上面只是設置了自啟動,但是還沒真正啟動,所以執行以下命令手動啟動PHP-FPM:

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist
php的配置和啟動工作已經結束了,然後驗證一下,執行

lsof -Pni4 | grep LISTEN | grep php
如果輸出以下類似內容,那就表示成功了,否則。。。自找原因吧:

php-fpm 69659 frdmn 6u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 69660 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 69661 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 69662 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
最後就是配置nginx虛擬機:

server {
listen 80;
server_name php.cssor.com;
root /var/www;

location / {
index index.html index.shtml;
}
#配置後綴為.php的就交給php引擎處理
#如果需要整站都託管給php,就把location ~ \.php$ 替換為location / ,同時上面的location / 配置就不需要了
location ~ \.php$ {
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 Web伺服器

由於每個過程較繁瑣,所以這里說說具體步驟,每個步驟的具體內容可以網路搜索。
安裝步驟
一、 編譯安裝PHP5.2.9所需的支持庫
二、編譯安裝MySQL 5.1.34擴展庫
三、編譯安裝PHP(FastCGI模式)
四、修改php-fpm配置文件
五、創建www用戶組及www用戶
六、編譯安裝Nginx
七、創建fcgi.conf文件
八、編輯Nginx配置文件
九、配置開機自動啟動Nginx + PHP
十、優化Linux內核參數

㈩ 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進程不可寫

熱點內容
android電量顯示 發布:2024-12-26 00:45:59 瀏覽:806
低版本的安卓機用什麼瀏覽器好 發布:2024-12-26 00:44:39 瀏覽:204
編譯電路輸出量 發布:2024-12-26 00:36:06 瀏覽:678
壓縮成iso文件 發布:2024-12-26 00:22:22 瀏覽:378
共軛復數的運演算法則 發布:2024-12-26 00:22:19 瀏覽:846
java視頻教程分享 發布:2024-12-26 00:22:18 瀏覽:427
web圖片緩存 發布:2024-12-26 00:21:01 瀏覽:156
verilog編譯結果 發布:2024-12-26 00:10:00 瀏覽:774
u盤啟動安裝linux系統 發布:2024-12-26 00:07:45 瀏覽:495
sizeof編譯 發布:2024-12-26 00:07:01 瀏覽:762