На одном из проектов, основанном на Bitrix, протухла версия PHP (5.6), было решено провести апдейт. В процессе вылезли некоторые нюансы, а которых и расскажу.
Сам процесс обновления прост: yum update php
Или же через скрипт битрикс /root/menu.sh
При обновлении может возникнуть ошибка, не дающая выполнять даже yum update, ругаясь на пакет php-xcache (или какой-то ещё). Причина тому при обновлении 5.6 на 7.х, что в последних php такого пакета нет, поэтому его просто можно удалить.
После обновления проверяем версию php -v и видим, что PHP обновился до нужной (7.0 или выше).
Случилось так, что после обновления php на сервере в ручном режиме, в админке битриксового портала версия не изменилась и по-прежнему пишет, что используется устаревшая 5.6. Проблема из-за модуля php в httpd, который просто не подгружен . Для устранения убеждаемся, что проблема в этом:
httpd -M
На выходе:
httpd: Syntax error on line 106 of /etc/httpd/conf/httpd.conf: Syntax error on line 6 of /etc/httpd/bx/conf/php.conf: Cannot load /etc/httpd/modules/libphp5.so into server: /etc/httpd/modules/libphp5.so: cannot open shared object file: No such file or directory
Смотрим проблемный файл /etc/httpd/bx/conf/php.conf и видим:
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
Все версии php5 заменяем на php7 и мягкий рестарт апача:
service httpd reload
Также после обновления стоит проверить файл hosts
Выявлено, что при неудачном обновлении через скрипт битрикса и последующем ручном обновлении, файл hosts затирается битриксом, в котором прописаны нужные айпишники, в т.ч. для отправки почты, а postfix ругается на:
fatal: config variable inet_interfaces: host not found: localhost