Простая установка PHP-FPM 5.6 или обновление с PHP-FPM 5.3/5.4 — на примере CentOS

Всем привет и всего такого прочего.

Еще одна заметка непосредственно из блога, а не основного цикла статей, т.к периодически, после статеек про всякие htop и opcache просят написать чего-нибудь еще этакого с меткой серверное.

PHP-FPM

В рамках этой текстовки кратенько напишу о PHP-FPM 5.6 и его установке с нуля или апгрейде со старых версий.

Традиционно, всё банально и не претендует на новшество, но зато я упомяну о двух часто возникающих проблемах, с которыми сталкиваются новички при сим процессе.

Давайте приступим.


PHP-FPM 5.6 под CentOS - установка или обновление

Традиционно, вваливаемся в консоль (можно сразу под рутом, если не страшно) и вводим набор команд для загрузки, добавления репозитория и установки:

rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
rpm -Uvh https://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
cd /etc/yum.repos.d
curl -O https://rpms.famillecollet.com/enterprise/remi.repo
yum install php-fpm php php-devel -y --enablerepo=remi-php56

Возможно потребуется установка дополнительных пакетов. Делается так:

yum install php-mbstring php-mcrypt php-soap php-apc -y --enablerepo=remi-php56
yum install gd-last --enablerepo=remi
yum groupinstall "PHP Support" --enablerepo=remi-php56 –y

При обновлении обычно не требуется, при установке с нуля иногда бывает.
На этом обычно всё. Проверить версию можно, традиционно, через команду:

PHP -v

Ответ будет примерно таким:

PHP 5.6.20 (cli) (built: Mar 31 2016 07:24:47)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Но может быть и не таким, а с ошибками. Тогда можно будет бегать недельку по интернетам с воплями всё пропало, а можно..

Типичные ошибки после обновления PHP-FPM

При установке с нуля обычно ужасов не бывает, а вот при обновлении со старых версий (5.3, 5.4 и тп) и/или при миграции на FPM бывает, как правило, следующее:

PHP Fatal error: [ionCube Loader]
The Loader must appear as the first entry in the php.ini file in Unknown on line 0

..или, скажем..

PHP Warning: PHP Startup: memcached: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20100525
These options need to match

Вместо memcahced и кубика (ionCube) могут быть упомянуты другие модули, а ошибки быть веселее, подробнее, больше и иметь другие цифорки-буковки. Одно из первых простых решений заключается в переименовании ini подключаемых модулей, т.к оно бывает не делается автоматически. На примере CentOS после обновления они выглядят так:

ini-файлы centos

Т.е в новой версии получают префикс 10-, 20-, 30- и тп, в то время как в старой конфиги могли называться как есть т.е ioncube.ini, memcache.ini и тп. В связи с этим, первое, что надо сделать, - это просто переименовать их добавив префикс. Обычно это уберет большую часть ошибок.

пути расширений

Для каких-то из модулей может потребоваться поправить пути. Это делается в самом ini для расширения или в php.ini (смотря как был настроен сервер изначально и CentOS это или нет). Особенно это касается случаев, когда пути были прописаны абсолютные, но поменялись после апдейта (такое бывает). Иногда можно поправить zend'-вые на не абсолютные, либо поправить на правильные новые абсолютные (можно быстро глянуть через WinSCP).

После всего этого надо бы перезагрузить fpm и иногда apache+nginx. Делается традиционно:

service restart php-fpm
service restart httpd
service restart nginx

Обычно вышенаписанного хватает, чтобы всё заработало в прежнем режиме. Если нет и Вы по-прежнему видите некоторые из ошибок (они бывают в основном при обновлении со старых версий на новые), вроде:

Module compiled with module API=20090626
PHP compiled with module API=20100525

То надо просто перекомпилить модуль с текущей версией php.

Послесловие

На сим, пожалуй всё, если уж говорить в двух словах. Надеюсь кому-то когда-то пригодится.

Оставайтесь с нами ;)

Sonikelf's Project's логотип Sonikelf's Project's логотип Космодамианская наб., 32-34 Россия, Москва (916) 174-8226
TrasserZero

На помнило анекдот, в котором раздается звонок в конторе секс-по-телефону..
-А правда вы можете поговорить на любые темы?
-Правда, милый..
-Давайте тогда обсудим проблемы маршрутизации в пиринговых сетях.. =))

Так и по теме - ну очень узкая тема, за всю жизнь не встречал сервера под линухами, всё как- то веники.. )) Но, возможно, кому-то будет полезно..

tvark

"Т.е в новой версии получают префикс 10-, 20-, 30- и тп, в то время как в старой конфиги могли называться как есть т.е ioncube.ini, memcache.ini и тп. В связи с этим, первое, что надо сделать, - это просто переименовать их добавив префикс. Обычно это уберет большую часть ошибок."
а поподробней как это сделать? через консоль или тот же WSP?