Сбой Apache при загрузке любого файла

Я установил Ubuntu Server 12.04 по умолчанию на микроэкземпляре Amazon EC2. Я установил обычный 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 для дальнейшего тестирования. Я настроил десятки серверов и никогда не сталкивался с этой ошибкой. Я действительно застрял, так как я не мог найти ничего связанного.

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

переменные php:

post_max_size   150M
memory_limit    256M
upload_max_filesize 150M

Примечание: я также добавил файл подкачки 2 ГБ, а также протестировал его на более крупном экземпляре EC2 с 1,7 ГБ ОЗУ, на всякий случай, и результат был точно таким же, так что его памяти недостаточно.

1 ответ

Решение

Я наконец решил это. Оказывается, есть ошибка в методе imagefillborder(). Я смог отследить его до этих строк, оба не смогли:

Я должен отметить, что этот код работает на PHP 5.2.x, так что это означает, что это новая введенная ошибка в 5.3.x.

Мой размер изображения 296 px x 296 px. Я создаю закругленные углы и заливаю все четыре угла цветом. Те, которые терпят неудачу, являются верхним правым и нижним правым углами (обратите внимание, что второе значение соответствует размеру изображения). Когда я уменьшаю с 1px, это работает как положено.

Действительно странная ошибка.

Это один segfaults:

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);
Другие вопросы по тегам