来填坑。
工作一年了,做什么事情,探究什么问题也还是会追根究底去考虑的。但是碰到了一个问题,还是发现了我的思考不足。
是这样的。
现在有一个功能需求,要对图片进行裁剪。我就找了一个图片处理的库,基于GD库的一个封装。在本地测试了一下,完美解决需求。
把代码更新到Dev环境之后,简单测试了一下,也没有问题。然后有一天,我就发现,对于图片裁剪,只能够处理PNG格式,如果处理JPEG和JPG格式的图片就会报错,说找不到这个图片文件。
我就读了一下这个库的源代码,发现代码的结构也很简单啊,看上去代码也没有什么问题。就是在fopen图片url的时候报了错。关键的问题是,PNG是可以正常fopen进行处理的,但是JPEG格式的就不可以fopen。百思不得其解啊!!!
然后我就叫来了MY哥寻求帮助。
…
最后对比了一下本地正确环境和Dev环境的phpinfo里显示的GD库,发现GD库里,本地环境比Dev环境多了一个libJPEG这么一行记录。
原来是Dev环境的GD库少东西。
…
其实不应该犯这个错的,如果可以处理PNG,并且代码里并没有区别处理,那么就说明代码是没有问题的。关键的问题就定位到了调用原生Lib上,再考虑到PNG可以,JPEG不可以,那么就是调用库有区别。
犯这个错的原因是我潜意识里把GD库当作了最小单位,以为他就是最基本的库,并没有考虑到他里面还需要多种库来做支持。
要追根究底,仔细思考事物的最最最基本的本质。从最原始的构造点去出发,去思考。
以上。