Собственно, после того, как на Битриксовой виртуалке отказалась ставится 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 на другой сокет.
Пока эксперементирую тестирую (тут ещё жестче с переходом). Как будет результат – отпишу.