Какую версию php выбрать для битрикс
Перейти к содержимому

Какую версию php выбрать для битрикс

  • автор:

Перевод Битрикс на PHP8

Самостоятельный переход на PHP последних версий — достаточно сложная задача, которую невозможно решить без необходимых знаний и опыта. Неаккуратные действия могут привести к неработоспособности Битрикс и сбою в доработках и модулях. Как следствие, компания-владелец ресурса потеряет деньги и лишится части трафика.

Веб-студия WRP оказывает услуги по переносу сайта под управлением Битрикс на PHP 8. Мы планируем переход таким образом, чтобы минимизировать время простоя сайта во время обновления. Наши сотрудники могут взять на себя настройку модулей и корректировку кода доработок, если они перестанут работать из-за перехода на новую версию PHP.

Как проявляется проблема

Как проявляется проблема

Переводить сайт на Битрикс необходимо в том случае, если на сервере используется версия PHP ниже 8.0. О наличии проблемы администратор может узнать из сообщения, которое появляется в CMS.

Разработчик платформы уведомляет, что с 1 февраля поддержка продуктов на старой версии прекращается. Поэтому необходимо как можно быстрее принять меры по повышению версии PHP.

Сделать это можно двумя способами:

  • Если компания использует собственный сервер, администратор должен позаботиться об обновлении необходимого программного обеспечения самостоятельно.
  • Если сайт развернут на выделенном или виртуальном сервере, процесс обновления может быть разным в зависимости от хостинг-провайдера. В этом случае необходимо проконсультироваться у службы технической поддержки хостера.

Однако обновление PHP — лишь часть решения. Необходимо также перенести сайт с сохранением функционала. Этот процесс лучше доверить профессионалам.

Как происходит переход на PHP 8

Обновление виртуальной машины Битрикс под PHP версии 8.0 или 8.1 (либо выше) производится по следующей схеме.

Как происходит переход на PHP 8

Тест работоспособности системы

Первым этапом переноса является проверка работы сайта на новой версии PHP. Для этого рекомендуется создать тестовый сервер и перенести CMS туда вместе с установленными модулями и кастомными доработками.

Этот шаг поможет убедиться, что сайт сохранит свою работу вместе со всеми плагинами. Также благодаря этому этапу можно определить, какие доработки и модули несовместимы с новой версией и перестали работать. В этом случае нужно выбрать альтернативные варианты или внести изменения в код системы.

Резервное копирование сайта

Перед началом работы наши специалисты делают копию сайта для последующего восстановления в случае необходимости. Наши специалисты рекомендуют резервировать информацию каждый раз перед внесением изменений или обновлением CMS. Этот шаг позволяет восстановить работу системы в минимальные сроки, если обновление пойдет не по плану.

Наша компания предлагает отдельную услугу настройки резервного копирования. Заказав ее, вы будете защищены от потери информации в случае хакерских атак, поломок сервера, неправильного обновления и т.п.

Обновление плагинов

Если на сайте используются сторонние плагины из маркетплейса, рекомендуется обновить их до последней версии. Как правило, разработчики побеспокоились о совместимости с PHP 8. Поэтому такой шаг позволит сохранить работу сайта на Битрикс без дополнительных усилий по настройке модулей.

Обратите внимание, что некоторые шаблоны используют свои модули для работы. Поэтому необходимо обновлять не только основной шаблон, но и все касающиеся его плагины.

Обновление ядра

Наши специалисты обновляют Битрикс в строгом соответствии с документацией разработчика CMS. Сотрудники нашей компании оказывали помощь в обновлении CMS сотням клиентов, поэтому хорошо знакомы с процедурой и возможными «подводными камнями». Они могут предотвратить проблему до ее возникновения.

Проверка доработок

После обновления ядра CMS необходимо убедиться в том, что внесенные в ходе индивидуальных доработок изменения в код продолжают работать так, как это задумано алгоритмом.

Рекомендуется проверять функции на тестовом сервере и при необходимости корректировать код для совместимости с PHP 8 до того, как он будет внесен в основной сайт.

Повысить PHP до версии 8.0 или выше

Эта версия доступна начиная с виртуальной машины Битрикс версии 7.5.0. Необходимо учитывать, что в процессе обновления могут возникать проблемы с работой модулей сторонних разработчиков. В случае их возникновения, наши сотрудники сделают необходимые настройки или доработки для их устранения.

Преимущества заказа переноса у нас

Заказ услуги перевода Битрикс на PHP 8 в нашей компании дает вам такие плюсы:

  • Мы выполняем обновление «под ключ»;
  • Наши специалисты гарантируют работоспособность сайта после окончания работ;
  • В случае необходимости сотрудники компании могут перенастроить модули или доработать код для совместимости с новой версией PHP;
  • Работы по переносу проводятся в минимально возможные сроки;
  • В случае необходимости, мы оказываем дополнительные услуги, связанные с запуском и эксплуатацией сайта на Битрикс.

Заказать обновление сайта на Битрикс

Как оформить заявку

Хотите перенести сайт под управлением Битрикс на PHP 8? Обращайтесь за помощью в компанию WRP. Алгоритм работы:

  1. Подайте заявку на перенос через электронную форму на сайте или по почте info@wrp.ru.
  2. Предоставьте специалисту необходимую информацию о сайте, сделанных доработках, используемых модулях, шаблонах и интеграциях.
  3. Согласуйте сроки обновления.
  4. Дождитесь окончания работы и проконтролируйте корректность работы CMS.

Стоимость услуги зависит от сложности проекта и устанавливается индивидуально при согласовании договора.

Редакция WRP

Редакция WRP

С 1 февраля 2023 года разработчик системы управления контентом Битрикс прекращает поддержку системы для серверов с PHP версии ниже 8.0. Для сохранения работоспособности сайта с индивидуальными доработками и внешними модулями необходимо перевести CMS на PHP 8 или 8.1, рекомендуемый разработчиками. Онлайн заказ

С 30 июня 2019 года будет ограничена поддержка продуктов 1С-Битрикс на PHP версии ниже 7.1

Об этом было известно еще в 2018 году. Компания 1С-Битрикс старается сделать так, чтобы сайты работали лучше и быстрее.

Выделить главное
Выделить главное

Некоторое время назад многие начали видеть в панели управления сайтом предупреждение, что С 1 июля 2019 года 1С-Битрикс ограничивает поддержку продуктов на устаревшей версии PHP.

Уведомление выглядит следующим образом.

Уведомление 1С-Битрикс

Уведомление демонстрируется разделе Marketplace -> Обновление платформы.

Что это значит

Это хорошая новость. Об этом было известно еще в 2018 году. Компания 1С-Битрикс старается сделать так, чтобы сайты работали лучше и быстрее. Новая версия PHP в ряде случаев значительно ускоряет сайт. Быстрый сайт – это лучше для ваших клиентов. Быстрые сайты любят поисковые системы.

Что будет, если проигнорировать уведомление

  1. Вы не потеряете права получать ключевые обновления. По крайней мере какое-то время.
  2. Сайт не перестанет работать.
  3. Со временем 1С-Битрикс начнет выпускать обновления безопасности и функционала, которые можно установить только с PHP 7.1. Ваш сайт нельзя будет обновить.

Я вижу только сообщение «Закончился срок получения обновлений»

Это означает, что у вас закончилась лицензия на получение обновлений платформы и вы не можете получать обновления безопасности, исправления ошибок и расширения функционала. Мы рекомендуем приобрети льготное или стандартное продление 1C-Битрикс.

Льготное продление Битрикс

Как сменить версию PHP

Если ваш сайт регулярно обновляется и обслуживается техническими специалистами, сделать это не сложно.

Инструкция по переводу сайта на PHP 7.1 для технических специалистов

  1. Необходимо в файловой структуре сайта найти файл dbconn.php Он расположен в папке /bitrix/php_interface/ . В файл добавить строчку define(«BX_USE_MYSQLI», true);
  2. В еще один файл .settings.php расположенный в папке /bitrix/ необходимо внести изменения:
  3. Исправить строку
    ‘className’ => ‘\\Bitrix\\Main\\DB\\MysqlConnection’,
    на
    ‘className’ => ‘\\Bitrix\\Main\\DB\\MysqliConnection’,
  4. Необходимо зайти в настройки хостинга и перевести работу сайта на версию PHP 7.1 или старше. После переключения обязательно проверьте работу всех основных функций сайта:
  5. Походите по сайту как посетитель. Сделайте заказы, заявки или покупки.
  6. Зайдите в панель управления сайтом как администратор (обычно логин admin) и выполните проверку системы. Проверка располагается в разделе «Настройки -> Инструменты -> Проверка системы.

В большинстве случаев, если сайт создавался профессиональными разработчиками, этого будет достаточно.

  1. Если сайт не работает, не создаются заказы или при проверке вы увидите «красные» предупреждения, переключите сайт обратно на вашу прежнюю версию PHP и обратитесь к своей техподдержке сайтов для устранения ошибок в работе сайта или хостинга.
  2. После устранения ошибок снова включите свежую версию PHP и повторите проверку.

Если хостинг не поддерживает PHP 7.1

Мы настоятельно рекомендуем сменить хостинг. О данных изменениях известно достаточно давно и, если хостинг не позаботился о качестве и безопасности своих услуг, не стоит ему доверять свой сайт.

Привет чат-бот, отдел продаж — пока!

Читайте также: Привет чат-бот, отдел продаж — пока!

Контекстная реклама для клиентов: РСЯ или Поисковая сеть?

Читайте также: Контекстная реклама для клиентов: РСЯ или Поисковая сеть?

1C-Битрикс

1C-Битрикс

Регулярное продление лицензии Битрикс – залог выгодной цены, безопасности сайта, а также возможность использовать все нововведения CMS.

Какую версию PHP выбрать?

Но в ней есть пункт меню «Upgrade php and mysql versions», который предлагает обновить до PHP 5.6.

Интересно,
какую версию рекомендует Битрикс? Это сейчас экспериментальная опция?
Для чего её сделали? Только недавно 5.3 у нас была.

Мне боязно обновлять. Мне за код сайта не страшно, а просто вдруг сервер заглючит, начнет зависать. Можно ли будет вернуть предыдущую PHP?

Сообщений: 2764 Баллов: 449 Регистрация: 20.04.2008
АКРИТ Веб-студия
01.11.2015 13:04:20

отката нет
у меня все работает норм после обновления и поднятия версий
но сайт сайту рознь.
что мешает проверить на тестовой ВМ все?
недавно сами все просили сделать актуальные версии, сделали, пользуйтесь и радуйтесь, в последнем обновлении много глюков поправили что радует.

Веб-студия АКРИТ Увеличьте продажи трансформировав сайт в сеть торговых точек в интернете
Администратор
Сообщений: 1234 Баллов: 106 Регистрация: 27.11.2007
02.11.2015 13:07:36

При обновлении машины до 5.1.4 версия php не меняется, до php 5.6 можно поднять чз меню машины.
Если нужна версия php 5.6 и стоит ниже 5.4, то сначала нужно обновить до 5.4, а потом уже будет доступно обновление до 5.6.
Если ставится машина 5.1.4 с нуля, то там уже сразу версия php 5.6.

Правильно сказали выше — в подобных случаях всегда нужен бекап и обновляться нужно не на бою, а сначала протестировать на копии сайта.

Сообщений: 2764 Баллов: 449 Регистрация: 20.04.2008
АКРИТ Веб-студия
02.11.2015 13:17:10

Цитата
Александр Панишев написал:
у меня все работает норм после обновления и поднятия версий

придется взять слова обратно, после нескольких дней стабильной работы вдруг отвалились рассылки, при этом БУС не обновлялся в настройки никто не лазил, сообщения о заказах приходят, а вот рассылки перестали отправляться при этом тест системы начал ругаться
Отправка почты — Ошибка! Не работает
Отправка почтового сообщения больше 64Кб — Ошибка! Не работает
— у кого то подобное проявилось?

Веб-студия АКРИТ Увеличьте продажи трансформировав сайт в сеть торговых точек в интернете
Администратор
Сообщений: 1234 Баллов: 106 Регистрация: 27.11.2007
02.11.2015 13:28:33
Александр Панишев, обратитесь в Техподдержку, будут разбираться.
Страницы: 1

Продукты

Управление сайтом
Битрикс24
Интернет-магазин + CRM

Решения

Для интернет-магазинов
Каталог готовых решений

Внедрение

Выбрать партнера
Проверить партнера
Стать партнером

1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507

Контент для лиц от 16 лет и старше

© 2001-2024 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности

Вышел PHP 8.2: разбираем главные изменения

Вместе с PHP-разработчиками Александром Макаровым (@SamDark), Валентином Удальцовым (@vudaltsov) и наставником Хекслета по PHP Владленом Гилязетдиновым (@funkylen) разбираемся, какие новые фичи появились в PHP 8.2, насколько эти изменения глобальны и какую роль в них сыграл проект РHP Foundation.

Эта статья — саммари стрима YouTube-канала PHP Point.

Кстати, ежегодный опрос русскоязычного PHP-сообщества с итогами года запущен! Результатами поделимся в конце января.

Главные изменения в PHP 8.2

Readonly-классы

Поля readonly сделали еще до версии 8.2. Раньше писать в них код и читать его можно было только в конструкторе. А теперь для этого не нужно помечать каждое поле — достаточно отметить весь класс как readonly .

Как выглядел код в предыдущих версиях PHP:

class BlogData < public readonly string $title; public readonly Status $status; public function __construct(string $title, Status $status) < $this->title = $title; $this->status = $status; > >

Как выглядит код в PHP 8.2:

readonly class BlogData < public string $title; public Status $status; public function __construct(string $title, Status $status) < $this->title = $title; $this->status = $status; > >

Но у фичи есть особенности:

  1. Readonly -классы недоступны для классов с необъявленными типами.
  2. Также readonly -классы недоступны для классов со статическими свойствами.
  3. Если мы захотим наследоваться от старого readonly -класса, новый тоже должен быть Readonly.

Типы в виде дизъюнктивной нормальной формы (ДНФ)

Теперь вместо того, чтобы указывать тип mixed для аргументов в методах, можно просто перечислять необходимые типы через амперсанд.

Как выглядел код в предыдущих версиях PHP:

class Foo < public function bar(mixed $entity) < if ((($entity instanceof A) && ($entity instanceof B)) || ($entity === null)) < return $entity; >throw new Exception('Invalid entity'); > >

Как выглядит код в PHP 8.2:

class Foo < public function bar((A&B)|null $entity) < return $entity; >>

Пожелание от меня: будьте осторожны с этой фичей. Она позволяет много методов объединять в один. Если бы я программировал приложения, то так не делал бы. А вот во фреймворках она будет очень кстати, потому что иногда, ради красивой API, мы сознательно жертвуем такой вот правильностью — используем подход с mixed -типами в сигнатуре.

Самостоятельные типы null, false и true

Это изменение единогласно приняла вся команда разработчиков PHP, так как в ядре PHP есть методы, классы и функции, которые возвращают false или true .

Если у вас метод никогда не возвращает false , то теперь можно указать, что он возвращает true или значение. Или наоборот, null и значение, или false и значение. Фича удобная и делает язык немного строже.

Как выглядел код в предыдущих версиях PHP:

class Falsy < public function almostFalse(): bool < /* . */ *>public function almostTrue(): bool < /* . */ *>public function almostNull(): string|null < /* . */ *>>

Как выглядит код в PHP 8.2:

class Falsy < public function alwaysFalse(): false < /* . */ *>public function alwaysTrue(): true < /* . */ *>public function alwaysNull(): null < /* . */ *>>

Модуль «Random»

Random — это целый пак разных интерфейсов. Особенности фичи:

  1. Разработчики сделали объектно-ориентированный API.
  2. Каждый инстанс независимый — то есть для разных целей можно инстанцировать n-штук псевдослучайных генераторов, которые никогда не пересекутся. Стало более безопасно.
  3. Mersenne twister заменен на интерфейс Engine. Раньше mt_rand() надо было инициализировать. Он был нужен не для всяких крипто-фич, а для того чтобы, например, сортировать массивы в случайном порядке. mt_rand() работал достаточно быстро, поэтому использовать его для утилитарных задач было неплохо. Теперь его заменили на интерфейс Engine, который предоставляет готовые реализации.

Как выглядит код в PHP 8.2:

use Random\Engine\Xoshiro256StarStar; use Random\Randomizer; $blueprintRng = new Xoshiro256StarStar( hash('sha256', "Example seed that is converted to a 256 Bit string via SHA-256", true) ); $fibers = []; for ($i = 0; $i < 8; $i++) < $fiberRng = clone $blueprintRng; // Xoshiro256**'s 'jump()' method moves the blueprint ahead 2**128 steps, as if calling // 'generate()' 2**128 times, giving the Fiber 2**128 unique values without needing to reseed. $blueprintRng->jump();

Константы в трейтах

Теперь можно объявлять константы внутри трейтов. Особенность фичи — нельзя получить доступ к константе через имя трейта, но можно через класс, который использует этот трейт.

Очень логичное изменение, на мой взгляд. Трейт сам по себе — это копипаст. Копипаст — штука опасная, но иногда полезная (у нас есть принцип «don’t repeat yourself»). И трейт — это один самых неинвазивных способов что-то повторить, который легко потом отрефакторить.

Как выглядит код в PHP 8.2:

trait Foo < public const CONSTANT = 1; >class Bar < use Foo; >var_dump(Bar::CONSTANT); // 1 var_dump(Foo::CONSTANT); // Error

Динамические свойства объявлены устаревшими

В классах PHP можно было динамически присваивать значения свойствам, которые мы не объявили ранее, и эти свойства появлялись после классов.

Теперь так сделать нельзя — будет появляться Deprecation notice . Но если сильно нужно, динамическими свойствами можно пользоваться, если пометить класс аннотацией #[\AllowDynamicProperties] . В экземплярах stdClass динамические свойства по-прежнему можно использовать.

Как выглядел код в предыдущих версиях PHP:

class User < public $name; >$user = new User(); $user->last_name = 'Doe'; $user = new stdClass(); $user->last_name = 'Doe';

Как выглядит код в PHP 8.2:

class User < public $name; >$user = new User(); $user->last_name = 'Doe'; // Deprecated notice $user = new stdClass(); $user->last_name = 'Doe'; // Still allowed

#[\SensitiveParameter]

Это маленькая, но очень классная фича, которая мельком упоминается в официальном анонсе.

Параметры в методах теперь можно обозначить как #[\SensitiveParameter] . Ниже в коде так отмечен параметр $secret , и в логах вместо значения параметра secret написано (Object(SensitiveParameterValue) .

function sensitiveParametersWithAttribute( #[\SensitiveParameter] string $secret, string $normal )
Exception: Error! in example.php:15 Stack trace: #0 example.php(25): sensitiveParametersWithAttribute(Object(SensitiveParameterValue), 'normal') #1

Считаю это изменение очень крутым, так как теперь у нас не будут утекать всякие ключи от API, пароли от базы. Команда разработчиков PHP практически единогласно проголосовала за эту фичу.

Какие еще изменения произошли

Расширение enum в константах

Раньше, чтобы использовать enum , надо было дублировать их значение. Это было очень неприятно: enum есть, а в объявлениях констант нельзя было из них что-то использовать. Теперь можно: новая фича уравнивает весь синтаксис. Классно, что язык эволюционирует в сторону удобства и большей консистентности.

const C = [self::B->value => self::B];
iterator_() + iterables

Теперь можно передавать в методы iterator_() тип \Traversables . Это просто замечательно, потому что раньше приходилось проверять, является ли аргумент объектом типа \Traversable , и если да, то надо было его конвертить. В PHP 8.2 можно больше не проводить эти проверки, что уменьшает количество кода и делает его более приятным и читаемым.

Расширена рефлексия
  • Можно узнать, анонимный ли метод — ReflectionFunction::isAnonymous()
  • Можно узнать, есть ли у метода прототип — ReflectionMethod::hasPrototype()
Новые функции memory_reset_peak_usage

Функции сбрасывают статистику по пиковому использованию памяти. Это очень полезно для EventLoop на PHP, Roadrunner и Swoole — мы сможем скинуть потребляемую память после запроса и измерить ту, которая ушла конкретно на один запрос.

Что признали устаревшим или убрали
  • Интерполяция в строках вида $<>
  • Не рекомендуется использовать функции utf8_encode и utf8_decode
  • Функции strtolower и strtoupper теперь не учитывают локаль — это круто, потому что версии PHP, установленные в двух системах Linux, могут работать по-разному из-за выбранной дефолтной локали.
  • Убрали много форматов callable :
  • “self::method”
  • “parent::method”
  • “static::method”
  • [“self”, “method”]
  • [“parent”, “method”]
  • [“static”, “method”]
  • [“Foo”, “Bar::Method”]
  • [new Foo, “Bar::Method”]

Мое мнение — на PHP 8.2 определенно стоит переходить хотя бы из-за крутых улучшений синтаксиса. Он все еще делает код более читаемым и понятным. Также разработчики пофиксили разные мелкие баги, которые мы не упомянули, но их было много.

Какие изменения PHP 8.2 еще в разработке

Некоторые разработчики считают, что в новую версию PHP добавили очень мало изменений. На самом деле, в РHP 8.2 было много саппортных вещей: код вычищали, из него что-то убирали. Каждое изменение, которое вводили разработчики, непросто описать в фичах. Да и вряд ли всем будет интересно, какие куски кода рефакторили. Так что по объему работы релиз 8.2 не отличается от предыдущих релизов. Просто в нем чуть меньше фич.

Большие усилия к разработке версии 8.2 приложили ребята из PHP Foundation — проекта, который финансирует разработчиков, готовых контрибьютить в PHP.

PHP Foundation создали много известных компаний, среди которых JetBrains, Automattic, Laravel. Проект запустили 22 ноября 2021 года, и за год коллектив из десяти администраторов-добровольцев и шести разработчиков внесли почти половину коммитов в ядро языка PHP и расширения.

В новую версию языка PHP Foundation имплементировал readonly -классы, самостоятельные типы null , false и true , тип true , типы в виде дизъюнктивной нормальной формы и получение свойств перечислений в константных выражениях. Также он объявил интерполяцию в строках вида $<> устаревшей.

Документация по PHP 8.2 еще в разработке, и разработчик PHP Foundation Джордж П. Баньярд сейчас отслеживает прогресс в изменениях. Вместе с командой он обсуждает эти нововведения:

  • Автоматическая имплементация для enum Stringable
  • Ассиметричная видимость
  • Получение констант из класса
  • Более понятные ошибки Date/Time
  • Доработки по Readonly
  • Работа с инициализаторами произвольных статических переменных.

Помочь составить документацию может каждый из нас — это, как говорится, good first issue (несложные задачи, выполнить которые под силу новичкам).

Также PHP Foundation планирует выдвинуть на обсуждение новые изменения в будущем релизе PHP 8.3.

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

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