[喵咪PHP]页面显示空白问题

#[喵咪PHP]页面显示空白问题#

##前言##

哈喽!大家好啊,喵咪PHP第一次和大家见面了,熟悉的朋友呢也之道喵咪我也开了喵咪Liunx和喵咪Golang这两个坑目的呢是吧平常遇到的一些问题或者是在学习中的东西好工具分享出来和大家交流沟通,今天要讲的问题是大家在PHP开发中常常会遇到的页面一片惨白啥内容都没有的问题,喵咪最近也是被一个很奇葩的问题给坑了一下,那么话不多说那就来和喵咪一起看看为什么PHP会返回空白页面呢?

附上:

喵了个咪的博客: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 欢迎大家的加入!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏*坤的Blog

Word文件乱码XML

2322
来自专栏HappenLee的技术杂谈

Linux下双网卡Firewalld的配置流程

实验室拟态存储的项目需要通过LVS-NAT模式通过LVS服务器来区隔内外网的服务,所以安全防护的重心则落在了LVS服务器之上。笔者最终选择通过firewalld...

1744
来自专栏*坤的Blog

Word文件乱码XML

一个朋友写的文档因为异常关机,导致全部文件变成了xml的乱码,正好帮他解决了,感觉这些或许有些帮助,就先记录下来了.

3239
来自专栏编程

Linux常用网络工具总结(一)

本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如、、、等。 本文不会深入研究这些命令的强大用法,因为...

2747
来自专栏编程之旅

HTTP API 设计指南HTTP API 设计指南

这篇指南介绍描述了 HTTP+JSON API 的一种设计模式,最初摘录整理自 Heroku 平台的 API 设计指引 Heroku 平台 API 指引。

1042
来自专栏马涛涛的专栏

使用leancloud给简历加数据库,实现留言功能

数据必须存在服务器上,这样任何设备访问服务器都可以得到数据,如果存在客户端的本地,那么其他客户端设备无法读取到.所以数据必须存储在服务器的数据库上

1685
来自专栏木头编程 - moTzxx

小程序 发送模板消息的功能实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

1.9K2
来自专栏程序员的知识天地

Linux 系统结构详解

内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-...

3722
来自专栏*坤的Blog

Word文件乱码XML

1584
来自专栏沃趣科技

ASM 翻译系列第二弹:ASM 12C 版本新特性

原作者:Bane Radulovic 译者: 邱大龙 审核: 魏兴华 随着Oracle 12c的发布,也就意味着全新版本的ASM面世了。已知的重大新...

3614

扫码关注云+社区