[喵咪PHP]頁面顯示空白問題

#[喵咪PHP]頁面顯示空白問題#php

##前言##nginx

哈嘍!你們好啊,喵咪PHP第一次和你們見面了,熟悉的朋友呢也之道喵咪我也開了喵咪Liunx和喵咪Golang這兩個坑目的呢是吧日常遇到的一些問題或者是在學習中的東西好工具分享出來和你們交流溝通,今天要講的問題是你們在PHP開發中經常會遇到的頁面一片慘白啥內容都沒有的問題,喵咪最近也是被一個很奇葩的問題給坑了一下,那麼話很少說那就來和喵咪一塊兒看看爲何PHP會返回空白頁面呢?git

附上:api

喵了個咪的博客:w-blog.cn服務器

PhalApi官網地址:http://www.phalapi.net/工具

開源中國Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release學習

##1. 瞭解PHP報錯機制##測試

其實在日常PhalApi回答各位小夥伴問題的時候經常會有童鞋截了圖問我,怎麼調用接口沒有反應呢?網站

這類問題每每你們對與PHP的報錯機制不是太瞭解致使了使用默認配置在運行出錯了程序結束了並無把報錯信息打印出來可是程序也沒辦法執行下去,其中兩個相當重要的兩個配置在php.ini中,咱們通常用以下配置,把全部報錯類型都打印出來:編碼

#錯誤等級,不一樣的配置會打印不一樣的錯誤和警告
error_reporting = E_ALL
//是否開啓報錯
display_errors = ON

咱們來看一下error_reporting能夠設置的參數種類:

E_ALL                  – 全部的錯誤和警告(不包括 E_STRICT)
E_ERROR                – 致命性的運行時錯誤
E_WARNING              – 運行時警告(非致命性錯誤)
E_PARSE                – 編譯時解析錯誤

通常以上就是咱們常常用到的

提示:建議開發測試環境使用E_ALL排除全部的錯誤和警告養成良好的編碼習慣,在生產環境時關閉display_errors避免沒必要要的請求失敗

##2. Nginx這個鍋你說你接不接##

第二個問題就比較有意思了,咱們來一同瞭解一下事情的通過

###2.1 事情是這樣的

在工做中作Excel導出功能,發現了一個問題我導出的內容只有69條多了就沒有了(本來8000多條記錄),而後直接請求接口以後返回值是一片空白,經過調試發現200條一下均可以成功導出多了不行.找了nginx報錯日誌,php日誌都沒有問題

###2.2 問題剖析

是否是很玄學,200條能夠多了不行,沒有任何error記錄,更奇怪的是我有一個環境是能夠成功導出的,奇怪吧?

先後懷疑過是否是php運行內存是否是給少了,查了一下我給了192MB確定是夠的,是否是nginx緩衝區給少了,查了下也沒有問題,是否是我使用的excel導出的姿式有問題呢?換了兩個類庫也沒問題,那究竟是爲何呢

**排除法:**這個事件中有兩個角色是最大的懷疑對象,Nginx,PHP,咱們先使用PHP經過cli的方式請求接口,發現該打印的都ok,那麼全部的矛頭都指向了Nginx了,可是Nginx也沒有錯誤日誌啊,費勁千辛萬苦也沒有找到緣由只能處處求助,最後是一個同事的一句話驚醒了夢中人,會不會是權限問題,我會想起了一件事情Nginx是www權限開始配好了,後面進行發佈工具部署的時候建立了一個發佈工具的用戶,而後把全部WEB運行的用戶權限都指向了這個用戶,檢查了一下果然仍是www用戶,因此是沒有權限的問題

###2.3 什麼原理

到底是什麼原理致使的這個問題,經過分析考證,PHP在打印的時候是實時輸出也就是echo一句就是打印一句,可是Nginx或者說WEB程序並非這樣的,他們都是把全部的返回結果一併返回,Nginx有一個buff緩衝區大小是64K,當你的頁面返回的文本大小大於64k的時候就會把須要輸出的內容記錄到本地而後在執行結束了一併輸出,可是正好這個時候應爲更換了Nginx的運行用戶爲發佈用戶,這個時候失去了權限致使寫不成功就失敗了,而後想要記錄ERROR日誌的時候發現error目錄也沒有權限也就沒有寫入error日誌

###2.4 請接好個人鍋

會想起一件事情我意識到這個問題的嚴重性,有一次領導說咱們的網站怎麼打不開了好多客戶在反應,而後我去查了下服務器發現Nginx居然死了,找了很久的error日誌也沒有,最後加了一個監控不了了之,原來都是沒有權限記錄error日誌的鍋

爲何Nginx不檢查權限呢?你就說吧這個鍋你接不接

##3. 總結##

出現了兩個問題一個是導出Excel的時候出現了截斷的問題,另一個是Nginx死了無證可查的問題,這都是應爲沒有給Nginx賦予權限的問題,分享出來給你們做爲參考,也但願你們不要犯和喵咪同樣的這種錯誤.

最後聲明一下Nginx是一個很好的軟件問題都是喵咪不細心的問題,只是但願寫的幽默一點把鍋甩給了Nginx

注:筆者能力有限有說的不對的地方但願你們可以指出,也但願多多交流!

PhalApi官網QQ交流羣:421032344 歡迎你們的加入!

相關文章
相關標籤/搜索