生产环境nginx代码报错500

2015年11月23日晚搭建完BRS系统(上传图片系统)后,测试机器功能发现无法图片无法上传到服务器上,查看nginx日志后发现日志nginx状态码返回500(内部服务器错误),

1、开始认为是nginx权限导致,把upload目录改为777,但是依然无效,后思考下如果是权限问题不应该返回500,而是403之类的状态码,后开始进行下一步排查;

2、后利用google的调试功能进行排查,后发现貌似数据库报错,插入不了数据,有的字段未显示但还不能为空,所以插入不进去数字,原因在于数据库配置问题,后把mysql配置文件中的严格模式改为非严格模式解决次问题;

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER

修改为:

sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER

3、数据库改完后发现上传原图可以了 ,但是生成规格图又无法上传了,还是报错500,请教php工程师后发现有个生成规格图的包在编译的php中exif.so未发现,然后安装exif.so扩展包后在测试成功解决问题!

spacer.gif



先来了解什么是图片的Exif信息

Exif是一种图象文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及全球定位系统(GPS)、缩略图等。简单地说,Exif=JPEG+拍摄参数。因此,你可以利用任何可以查看JPEG文件的看图软件浏览Exif格式的照片,但并不是所有的图形程序都能处理Exif信息。


开启PHP模块

默认情况下,PHP读取图片Exif信息模块是不开启的,我们需要先开启这个模块。

开启Exif模块需要mbstring支持,所以先来安装mbstring,以下是以Linux环境为例,其它环境类似。

安装mbstring模块

首先找到php源码包位置,直接进入ext/mbstring,执行以下命令安装,具体参数得看自己的环境。


代码如下:


[root@lee ext]# cd /data0/software/php/ext/mbstring
[root@lee mbstring]# /usr/local/webserver/php/bin/phpize 
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
[root@lee exif]# ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
[root@lee mbstring]# make && make install
Installing shared extensions:     /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
Installing header files:          /usr/local/webserver/php/include/php/
[root@lee mbstring]#

安装好以后,我们可以进入extensions目录看看模块是否存在,存在表示安装成功。

你可能感兴趣的:(nginx)