Обновление PHP до 5.2.x в CentOS 5
Просто, как раз-два-три
На сервере с CentOS 5.1 столкнулся с такой проблемой: Apache при открытии PHP-страниц с завидным постоянством писал в лог следующие ошибки:
К сожалению, поиск в Google практических результатов не дал: ошибка могла случаться на любом железе и любой версии Linux. Больше всего жаловались (не)счастливые обладатели Zend Optimizer.
Обновил CentOS до 5.2 (в обновлении пришёл новый glibc
), но это не помогло. Странно, я видел много серверов, работающих на CentOS без таких ошибок.
Пытаясь найти минимальную конфигурацию, на которой бы воспроизводились ошибки, я отключал один за одним модули Apache, модули PHP, но всё тщетно. Когда же я отключил mod_php, ошибка пропала — на статических страницах всё было прекрасно.
PHP оказался старым: 5.1.6 или около того. А с обновлением были проблемы: RedHat ES5, как и CentOS, не поддерживает PHP более новых версий. Установка из исходного кода тоже не выход: на живом сервере нарушать зависимости пакетов почему-то не хотелось.
К счастью, выход нашелся довольно быстро: использовать репозиторий Remi Collet. Детали по ссылке, а мне помогло такое решение:
wget http://rpms.famillecollet.com/el5.i386/remi-release-5-4.el5.remi.noarch.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
yum --enablerepo=remi update php
После чего
tail -f /var/log/httpd/error_log
Вуаля, ошибка исчезла! И не пришлось звать на помощь Мастерхост
Для возврата к старой версии PHP (мало ли) нужно сделать так:
yum remove php php-cli php-common
yum install php