導航:首頁 > 編程語言 > nginxphp錯誤日誌

nginxphp錯誤日誌

發布時間:2024-12-30 21:49:05

『壹』 linux php錯誤日誌在哪

由於nginx僅是一個web伺服器,因此nginx的access日誌只有對訪問頁面的記錄,不會有php 的 error log信息。
nginx把對php的請求發給php-fpm fastcgi進程來處理,默認的php-fpm只會輸出php-fpm的錯誤信息,在php-fpm的errors log里也看不到php的errorlog
原因:
php-fpm的配置文件php-fpm.conf中默認是關閉worker進程的錯誤輸出,直接把他們重定向到/dev/null,所以我們在nginx的error log 和php-fpm的errorlog都看不到php的錯誤日誌。
解決nginx下php-fpm不記錄php錯誤日誌的辦法:
1.修改php-fpm.conf中配置 沒有則增加
2.修改php.ini中配置,沒有則增加
3.重啟php-fpm

『貳』 Nginx和PHP的配置

在現今網路架構中,Nginx與PHP的組合被廣泛應用,尤其在web伺服器領域。為了使Nginx能夠正確調用PHP,我們需要對Nginx配置文件進行調整,尤其是涉及到對php的動態執行。本文將深入探討如何在Nginx伺服器中正確配置PHP調用方法,以及配置背後的原理。


配置文件默認位於 /etc/nginx/nginx.conf,在我的環境中,該文件位置為 /etc/nginx/nginx.conf。使用文本編輯器如vim打開配置文件,進行調整。


配置文件中的關鍵要點包括:



進行php的fastcgi配置,首先在vim中打開nginx配置文件,定位到server部分進行調整。



完成配置後,重啟Nginx服務。通過在Nginx根目錄下創建一個php文件(例如:php_info.php),並輸入相關代碼,訪問該文件以驗證配置是否成功。


了解了Nginx與php的運行原理後,配置過程變得直觀且易於執行。Nginx的worker進程負責管理網路請求,而php作為一個cgi程序,則由名為php-fpm的進程管理器進行管理。fastcgi是一種進程管理器,用於管理cgi進程,如php-fpm,它監聽特定埠(默認9000埠),並處理傳入的請求。


配置文件中的關鍵信息包括:



通過此配置,當重啟Nginx後,在特定目錄下創建php文件並訪問時,網頁將顯示相應內容。


對於需要對外網訪問內網設置的情況,需在nginx配置文件中開放相應的埠,確保外網可以訪問內網伺服器的特定埠。如將外網IP映射至內網伺服器的82埠,需在配置文件中進行相應的埠開放操作。


本文旨在提供Nginx配置PHP調用方法及配置原理的詳細指南,助力開發者高效實現伺服器配置,提升開發效率。對於進一步提升技能、解決進階問題,可參考整理的高級進階干貨資料。

『叄』 nginx php-fpm記錄php錯誤日誌怎麼配置

要想讓php-fpm顯示錯誤日誌,首先需要配置php-fpm。
在php-fpm的配置文件中(一般位於php安裝目錄下的etc/php-fpm.conf)配置php錯誤日誌的文件路徑。

1
2
3
4
5
6

; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /home/wangwei/php/var
; Default Value: log/php-fpm.log
;error_log = log/php-fpm.log

如上是我的php-fpm.conf文件中配置錯誤日誌的地方。把error_log = log/php-fpm.log之前的;去掉,然後修改為:

1
2
3
4
5
6

; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /home/wangwei/php/var
; Default Value: log/php-fpm.log
error_log = /home/work/log/php-fpm.log.wf

修改之後,保存配置,然後重啟php-fpm就可以啦。
注意如果用相對路徑的話,的路徑的前綴是基於php安裝目錄的var目錄的。

『肆』 Http協議狀態碼理解(1**~5**)

通俗的來說,nginx作為一個代理伺服器,將請求轉發到其他伺服器或者php-cgi來處理,當nginx收到了無法理解的響應時,就返回502。當nginx超過自己配置的超時時間還沒有收到請求時,就返回504錯誤。

php-fpm沒有啟動

我們關閉php-fpm。

刷新頁面,發現返回502錯誤:

nginx的error_log:

php-fpm請求超時

我們首先將php-fpm.conf中的 max_terminate_request 改成5s:

在php腳本中添加如下語句:

刷新頁面,發現返回502錯誤:

查看php-fpm的error_log,有如下日誌:

查看nginx的error_log,有如下日誌:

504即nginx超過了自己設置的超時時間,不等待php-fpm的返回結果,直接給客戶端返回504錯誤。但是此時php-fpm依然還在處理請求(在沒有超出自己的超時時間的情況下)。

這里有三個相關的配置:

這里我們將fastcgi_read_timeout設置為1s,後端還是延遲20s,觀測效果:

nginx返回504錯誤。

『伍』 真心求助.nginx錯誤

Nginx伺服器錯誤一般有以下幾點原因:

1、請求的header過大。nginx默認的header長度上限是4k,如果超過了這個值,nginx會直接返回400錯誤.

解決方法:配置nginx.conf相關設置。可以通過以下2個參數來調整header上限:

client_header_buffer_size 16k;large_client_header_buffers 4 16k。

2、上傳文件過程中出現錯誤。這時瀏覽器顯示「413 Request Entity Too Large」。這是因為沒有設置client_max_body_size,這個參數默認只是1M,也就是說發布的文章內容大小不能超過1M。

解決方法:增加如下兩行到nginx.conf的http{}段, 增大nginx上傳文件大小限制:設置允許發布內容為8M:client_max_body_size 8M;client_body_buffer_size 128k。

另外如果運行的是php,那麼還要檢查php.ini,這個大小client_max_body_size要和php.ini中的如下值的最大值一致或者稍大,這樣就不會因為提交數據大小不一致出現的錯誤:post_max_size = 8M;upload_max_filesize = 6M。

修改完配置後,別忘記重新載入。

3、客戶端在為等到伺服器相應返回前就關閉了客戶端描述符。一般出現在客戶端設置超時後,伺服器主動關閉。

解決方法:根據實際Nginx後端伺服器的處理時間修改客戶端超時時間。

4、腳本錯誤(php語法錯誤、lua語法錯誤)。

解決方法:查看nginx_err_log php_err_log。

5、訪問量過大,系統資源限制,不能打開過多文件。 磁碟空間不足。(access log開啟可能導致磁碟滿溢,伺服器主動關閉)。

解決方法:修改/etc/sysctl.conf文件,並使用下面的命令確認: #sysctl -p。要使 limits.conf 文件配置生效,必須要確保 pam_limits.so 文件被加入到啟動文件中。

6、後端服務無法處理,業務中斷。

解決方法:從後端日誌獲取錯誤原因,解決後端伺服器問題。

7、後端伺服器在超時時間內,未響應Nginx代理請求。

解決方法:根據後端伺服器實際處理情況,調正後端請求超時時間。

8、網站頁面緩存過大。

解決方法:配置nginx.conf相關設置:fastcgi_buffers 8 128k;send_timeout 60。

『陸』 php進程超時介面返回504錯誤分析

在一次介面測試中,發現返回的http 504 time out 的錯誤,然後查看了php-fpm的錯誤日誌,發現了如下錯誤

從表現上看,是php進程超時導致的進程被kill了,那麼這個超時時間以及kill的機制是跟哪些參數有關呢,這里系統這里一下。

Nginx服務一般因為php的錯誤或者超時會有兩種錯誤碼502 bad Gateway 或者 504 Gateway Time-out

一種情況是php產生了語法錯誤,比如循環調用、變數作用域錯誤、方法不存在等,如果開啟錯誤日誌輸出的話,這種錯誤在php-fpm的錯誤日誌中是可以看到調用棧信息的。

另外一種情況可能就是超時引起的php-fpm主動kill的情況,在php.ini和php.fpm中有兩個配置項,用來管理php腳本的最大執行時間

當php腳本的執行時間超過這個時間時,PHP-FPM不只會終止腳本的執行,還會終止執行腳本的Worker進程。所以Nginx會發現與自己通信的連接斷掉了,就會返回給客戶端502錯誤。

以頂部的錯誤為例,當報502錯誤是,nginx的errorlog中有如下日誌,:

所以只需將這兩項的值調大一些就可以讓PHP腳本不會因為執行時間長而被終止了。request_terminate_timeout可以覆蓋max_execution_time,

所以如果不想改全局的php.ini,那隻改PHP-FPM的配置就可以了。

此外要注意的是Nginx的upstream模塊中的max_fail和fail_timeout兩項。這兩個配置表示在fail_timeout事件內,如果fail的測試達到max_fail,那麼在接下來的fail_timeout時間內,Nginx都會認為上游伺服器掛掉了,都會返回502錯誤。

所以可以將max_fail調大一些,將fail_timeout調小一些。

PHP-FPM設置的腳本最大執行時間已經夠長了,但執行耗時PHP腳本時,發現Nginx報錯從502變為504了。這是為什麼呢?

因為我們修改的只是PHP的配置,Nginx中也有關於與上游伺服器通信超時時間的配置

以Nginx超時時間為90秒,PHP-FPM超時時間為300秒為例,報504 Gateway Timeout錯誤時的Nginx錯誤訪問日誌如下:

調高這三項的值(主要是read和send兩項,默認不配置的話Nginx會將超時時間設為60秒)之後,504錯誤也解決了。

而且這三項配置可以配置在http、server級別,也可以配置在location級別。擔心影響其他應用的話,就配置在自己應用的location中吧。

要注意的是factcgi_connect/read/send_timeout是對FastCGI生效的,而proxy_connect/read/send_timeout是對proxy_pass生效的。

參考鏈接: http://www.cnblogs.com/fei33423/p/8184098.html 感謝分享!

閱讀全文

與nginxphp錯誤日誌相關的資料

熱點內容
linuxusb識別u盤 瀏覽:391
找對象app名稱是什麼 瀏覽:162
為什麼選擇童程童美學習編程 瀏覽:742
db2runstats命令 瀏覽:849
matlab怎麼用遺傳演算法 瀏覽:809
程序員喜歡黑色背景 瀏覽:590
音頻信號需要什麼樣的單片機 瀏覽:676
剪力牆牆柱箍筋是否需要加密 瀏覽:165
如何查看伺服器上埠是否打開 瀏覽:298
目前流行編程語言 瀏覽:458
騰訊雲伺服器免流嗎 瀏覽:850
c命令行解析 瀏覽:788
解壓轉移注意力最好的辦法 瀏覽:916
多人協作php 瀏覽:920
linux版notepad 瀏覽:169
androidwifi定位百度 瀏覽:256
百合app是什麼東西 瀏覽:271
天下布魔文件夾名字 瀏覽:748
阿里雲ecs伺服器無法連接 瀏覽:189
安卓如何錄制清晰且流暢的視頻 瀏覽:134