上传任何文件时,Apache会发生段错误

我已经在Amazon EC2微型实例上安装了默认的Ubuntu Server 12.04。 我已经安装了通常的,PHP,Apache,MySQL等。一切运行正常,直到我尝试通过PHP上传一些文件。 文件大小无关紧要。 它甚至发生5kb的jpeg文件。 我得到的是:

[Thu Nov 08 18:52:11 2012] [notice] child pid 1199 exit signal Segmentation fault (11) 

当我执行相同的代码,但没有提到图像,它的作品(但我需要的形象,当然)

我必须注意到,完全相同的代码在OpenSUSE 11.1机器上运行良好,我只是将其移到Amazon实例上进行进一步testing。 我已经安装了几十个服务器,从来没有遇到过这个错误。 我真的被卡住了,因为我找不到任何相关的东西。

uname -a给出

 Linux server 3.2.0-31-virtual #50-Ubuntu SMP Fri Sep 7 16:36:36 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 

Apache / 2.2.22(Ubuntu),PHP 5.3.10-1ubuntu3.4

PHPvariables:

 post_max_size 150M memory_limit 256M upload_max_filesize 150M 

注意:我还添加了交换文件2Gb,并且在1.7Gb的RAM上testing了一个更大的EC2实例,以防万一,结果完全一样,所以内存不足。

我终于解决了。 原来,在imagefillborder()方法中有一个bug。 我能够跟踪到这些行,都失败了:

我必须注意到这个代码在PHP 5.2.x上运行,所以这意味着它是5.3.x中新引入的一个bug。

我的图像大小是296 px x 296 px。 我正在创build圆angular,并用颜色填充所有四个angular。 这些失败的是右上angular和右下angular(注意第二个值与图像大小相匹配)。 当我用1px递减时,它按原样工作。

真的很奇怪的错误。

这一段错误:

 imagefilltoborder(Resource id #95, 296, 0, 1924607, 1924607); imagefilltoborder(Resource id #95, 296, 296, 1924607, 1924607); 

这个工作:

 imagefilltoborder(Resource id #96, 296-1, 0, 11333839, 11333839); imagefilltoborder(Resource id #96, 296-1, 296-1, 11333839, 11333839);