Битрик VM — обновление системы и PHP до 5.6.24


Собственно, после того, как на Битриксовой виртуалке отказалась ставится Joomla 3 — понял, что тянуть с обновлениями уже дальше нельзя!
Тут большинство скажет, касательно обновлений — нужно делать всё перманентно и вовремя — согласен на все 100% !
Но как обычно — с временем туговато, а последствия обновлений как всегда непредсказуемы. Да и не забываем притчу «солнце всходит и заходит — не трогай, пусть работает» 🙂

Итак, имеем битриксовую виртуалку с довольно устаревшей CentOs 5.8 (со всеми пакетами) и PHP 5.3.3 на борту (bitrix.env 4.0.2)

Перелопатил много инфы, кратко решение вопроса: (как делал я)
* полный бэкап всей виртуалки
* внутри — полный бэкап /etc/ — при обновах старые конфиги переименовываются и т.п…
* обновляем систему (yum update или в меню битрикса system update — одно и тоже)
* добавляем remi репозиторий
Centos 6
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
После установки пакета нужной версии репозитория, у Вас появится соответствующий файл: /etc/yum.repos.d/remi.repo
Теперь необходимо включить нужную версию PHP. Для этого редактируем /etc/yum.repos.d/remi.repo.
Для обновления PHP до 5.6 достаточно установить enabled=1 в главной секции [remi].

После чего обновляем bitrix.env до 5й версии через меню битрикса (иначе этот пакет будет мешать обновиться PHP)
Далее yum update и вуаля имеем PHP 5.6.24

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

Первое — старые версии Джумлы (и не только), портянка предупреждений — просто убираю вывод ошибок в .htaccess (либо как вариатн настроить error_reporting — убрать депрекатед и предупреждения)
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off

Второе — при апдейте слетели подключаемые модули, соответственно валят ошибки
Fatal error: Call to undefined function mysqli_init() in
Fatal error: Call to undefined function curl_init() in
и т.д. и т.п

Идём в /etc/php.d/ — переименовываем подключения (убираем .disabled в файлах) — подключаются *.ini файлы после чего рестартим аппач

Ещё фишка — передача амперсанта в функции. Во всех вызовах фукнций function(&$variable) — апмерсант убираем!

Вроде всё — всем успехов!

P.S. Почитал инфу о PHP7 — поставил на виртуалку одновременно с 5.6 в режиме php-fpm на другой сокет.
Пока эксперементирую тестирую (тут ещё жестче с переходом). Как будет результат — отпишу.

,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *