PHP7 logo

В новогодние каникулы решил обновить PHP на сервере до 7 версии. На этом сервере у меня крутится: Yii (обоих версий), Битрикс, MODX Revolution и OpenCart.

Посмотрим, кто из них переживёт обновление.

Установка PHP7

Оказалось, нет ничего проще, как выполнить всего 4 команды (на самом деле можно и одной) в консоли и можно наслаждаться свежей версией PHP:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php-7.0
sudo apt-get update
sudo apt-get install -y php7.0

Конечно, надо не забыть поставить нужные модули php, такие как mcrypt, json, gd и т.д.


Как повели себя движки и фреймворки


Фреймворк Yii

Что Yii1, что Yii2 не заметили разницы совсем. То есть, ничего не отвалилось. Всё прекрасно работает. На Yii (первом) и теперь на PHP7 работает этот сайт.


1С-Битрикс

Начал рассыпаться на зарезервированных словах в php. Началось всё с класса Bitrix\Main\Text\String.

К слову, начиная с седьмой версии PHP в именах классов, интерфейсов и трейтов нельзя использовать слова: int, float, bool, tring, true, false, null, resource, object, mixed, numeric.

Эксперимента ради, я решил отрефакторить класс Bitrix\Main\Text\String в Bitrix\Main\Text\StringExt и попробовать, что выйдет.

Но на этом не закончились ошибки. Битриксовский отловщик ошибок везде в параметрах функций ожидал явно \Exception $exception. А как известно, в семёрке добавили новые типы исключений. Этот момент я тоже пофиксил.

Ну и напоследок в файле /bitrix/modules/sale/lib/internals/input.php был опять же класс с именем String. Но там битрикс даже туду-шку оставил:

class String extends Base // TODO rename to StringInput for php 7

Вот после этих всех фиксов битрикс завёлся.


OpenCart

Сначала не завёлся и начал ругаться на отсутствующие фукнции php_mysql (которые в семёрке благополучно выпилили). Но, как оказалось у меня была установлена не свежая версия движка. Проинсталлировал свежую (2.1.0.1.1) и о чудо, OpenCart завёлся.


MODX Revolution

К сожалению, последняя стабильная версия 2.4.2 не завелась. Ошибки начинаются с класса modmanagerresponse: PHP Fatal error: Uncaught Error: Call to a member function setProperties() on null in /core/model/modx/modmanagerresponse.class.php:191. Дальше я копать не стал. Ну и кстати, веб-морда сайта работала без нареканий. Проблема только в админке.


P.S. Замеры скорости до и после я не делал. Но точно могу сказать, что мой блог стал кушать почти в 2 раза меньше памяти.