Установка PHP7 на Ubuntu Server 14.04. Запуск PHP-фреймворков и CMS на новой версии
В новогодние каникулы решил обновить 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 раза меньше памяти.
4 комментария
Ну круто! Спасбо за статью!. Буду пользоваться
mr.Bro, скоро будет статья про сравнение скорости Apache + mod-php vs Nginx + php-fpm.
Степенно жди :-)
Как повели себя движки и фреймворки
А чего про WordPress нет информации?
mr.Bro им я не увлекаюсь.