Если версия php ниже

Как понизить версию PHP?

На примере буду понижать версию PHP в Ubuntu 18.04, в которой по умолчанию устанавливается версия 7.2. Я не рекомендую понижать версию PHP, так как новые версии производительнее и закрывают уязвимости, но бывают случаи когда нужно запустить старый скрипт или движок, который не работает на новых версиях PHP, а исправить код очень трудоемко из-за того что много файлов.

Если PHP установлен в системе, то полностью удалим его:

sudo apt-get remove php-gd php-curl php-common libapache2-mod-php sudo apt-get remove --purge php*

Обновим систему и установим необходимые компоненты чтобы в дальнейшем можно было вручную скомпилировать любую версию PHP:

sudo apt-get update sudo apt-get install build-essential openssl libssl-dev bison autoconf automake libtool libmysqlclient-dev re2c libxslt1-dev libxml2-dev flex libssl-dev libsqlite0-dev libdb-dev libncurses5-dev libbz2-dev libldap2-dev libjpeg-dev libc-client2007e-dev libxpm-dev libfreetype6-dev libcurl4-openssl-dev libgmp3-dev libmcrypt-dev libmhash-dev libsnmp-dev freetds-dev libpcre3-dev zlib1g-dev libmysqlclient-dev git unixodbc-dev libpng-dev libaspell-dev libreadline-dev librecode-dev libtidy-dev apache2-dev libcurl4-gnutls-dev

Теперь скачем архив с нужной версией PHP с официального сайта https://www.php.net/releases/

sudo -i wget https://www.php.net/distributions/php-5.6.40.tar.bz2 tar -xvf php-5.6.40.tar.bz2 cd php-5.6.40

Ну и собственно сконфигурируем, скомпилируем и установим:

./configure make make install

Конфигурировать также можно с дополнительными параметрами, например:

./configure --with-config-file-path=/etc/php5/apache2 --with-pear=/usr/share/php --with-bz2=/usr --with-mysqli --with-mysql --with-apxs2 --with-gd --enable-mbstring

Создадим файл конфигурации:

sudo cp php.ini-production /usr/local/lib/php.ini sudo ln -s /usr/local/lib/php.ini /etc

После установки добавим в конфигурационный файл /etc/apache2/apache2.conf следующую строку:

AddType application/x-httpd-php .php

И подключим PHP к apache2 выполнив команду:

sudo a2enmod php5 sudo service apache2 restart

Проверим установленную версию:

К запущенным ресурсам работающим на старых версиях PHP я рекомендую открывать доступ только для нужных IP адресов, например как я описывал в статьях:
Контроль доступа Apache2
Как настроить доступ по IP в nginx

Источник

version_compare

version_compare() сравнивает две «PHP-стандартизованные» строки с номерами версий.

Функция сначала заменяет _, и + на точку . в строках версий, а также добавляет точки . перед и после каждого символа, не являющегося числом. Например, ‘4.3.2RC1’ преобразуется в ‘4.3.2.RC.1’. После этого сравнивает части строк слева направо. Если часть строки содержит специальные символы версий, они обрабатываются следующим образом: any string not found in this list < dev < alpha = a < beta = b < RC = rc < # < pl = p. Таким образом можно сравнивать не только версии разных уровней, вроде ‘4.1’ и ‘4.1.2’, но и специфичные версии, включающие статус разработки.

Читайте также:  Java get the current directory

Список параметров

Если задан третий необязательный аргумент operator , то версии проверяются на соответствие логическому выражению. Возможные операторы: , lt, , le, >, gt, >=, ge, ==, =, eq, !=, <>, ne.

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

Возвращаемые значения

По умолчанию, функция version_compare() возвращает -1, если первая версия меньше второй; 0, когда они равны; 1, если вторая меньше первой.

При использовании аргумента operator функция вернет TRUE , если выражение в соответствии с оператором верно, и FALSE в остальных случаях.

Примеры

В примере ниже используется константа PHP_VERSION , она содержит номер версии PHP, который выполняет код.

Пример #1 Пример использования version_compare()

if ( version_compare ( PHP_VERSION , ‘6.0.0’ ) >= 0 ) echo ‘Я использую PHP версии не ниже 6.0.0, моя версия: ‘ . PHP_VERSION . «\n» ;
>

if ( version_compare ( PHP_VERSION , ‘5.3.0’ ) >= 0 ) echo ‘Я использую PHP версии не ниже 5.3.0, моя версия: ‘ . PHP_VERSION . «\n» ;
>

if ( version_compare ( PHP_VERSION , ‘5.0.0’ , ‘>=’ )) echo ‘Я использую PHP 5, моя версия: ‘ . PHP_VERSION . «\n» ;
>

if ( version_compare ( PHP_VERSION , ‘5.0.0’ , ‘ echo ‘Я использую PHP 4, моя версия: ‘ . PHP_VERSION . «\n» ;
>
?>

Примечания

Замечание:

Константа PHP_VERSION хранит номер текущей версии PHP.

Замечание:

Заметьте, что дорелизные версии, такие как 5.3.0-dev, считаются меньше, чем финальные (вида 5.3.0).

Замечание:

Специальные слова вроде alpha и beta чувствительны к регистру. Строки версий, не придерживающиеся PHP стандарта, нужно приводить к нижнему регистру функцией strtolower() до вызова version_compare() .

Смотрите также

  • phpversion() — Выдает текущую версию PHP
  • php_uname() — Выдает информацию об операционной системе, на которой запущен PHP
  • function_exists() — Возвращает TRUE, если указанная функция определена

Источник

Ограничение поддержки на PHP версии ниже 8.0

С 1 декабря 2022 года Битрикс начал сигнализировать пользователям о потребности обновить препроцессор в связи с прекращением поддержки своих продуктов. Уведомление отображается в разделе обновления платформы. Отказ приведет к приостановке обновлений вашего сайта, это может негативно отразиться на его развитии.

Важно заметить, что обновляться нужно правильно:
  1. Перед обновлением важно помнить о необходимости создания резервной копии сайта(ов) средствами хостинг провайдера;
  2. Проводить обновление и отладку сначала на тестовом сервере (песочница);
  3. Запросить у хостинг провайдера — создание резервной копии всего сервера (при наличии возможности создания “снимков”).

Поддержка будет ограничена с 1.02.2023 года

Уведомление содержит следующий текст: С 01.02.2023 будет ограничена поддержка наших продуктов на PHP версии ниже 8.0. Рекомендуемая версия PHP — 8.1 и выше. Вы используете версию PHP 7.4.33. Пожалуйста, запланируйте обновление PHP или обратитесь в службу технической поддержки вашего хостинга.

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

Уведомление об ошибке

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

Что делать и куда бежать?

Бежать никуда не придется, ниже представим два варианта решения ситуации, как нашими силами, так и самостоятельно. А если информации недостаточно, позвоните или напишите нам, разберем на вашем примере, наверняка это будет бесплатно.

Немного рекламы

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

Диагностика проводится бесплатно, а последующее обновление, после определения сложности, за отдельную плату.

Наши специалисты готовы взяться за решение задачи, стоимость работы в среднем от 5 000 рублей.

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

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

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

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

Обновление PHP на виртуальном хостинге Бегет

Хостинг от Бегет — это готовое решение для размещения интернет-проектов без необходимости администрировать сервер. Бегет — это хостинг для людей! Для тех кому нужны стабильно работающие сайты. Лозунг “Дарим людям удовольствие от работы с хостингом”, считаем полностью оправданным — за 8 лет работы с ними все наши сложности решались моментально, техническая поддержка на высоте!

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

Переходите по ссылке cp.beget.com/sites и напротив своего сайта нажимаете шестеренку, это настройки.

Список сайтов Бегет

Смена версии php на Beget

Далее просто меняете версию, дождётесь применения настроек, процесс занимает не более минуты и проверяйте работу сайта, а потом переходите к обновлению платформы Битрикс. Уведомление о потребности обновить версию, в следующий раз, прилетит через пару-тройку лет.

Как обновить пакеты PHP на BitrixVM

В случае, когда у вас арендован выделенный сервер (VPS), вы можете обратиться к обновлению пакетов напрямую — через SSH консоль и меню BitrixVM.

Порядок действий в конфигурационном меню (под root пользователем):

BitrixVM - смена версии php через меню БитриксВМ

Смена версии PHP через ISP панель

Для переключения режима работы PHP, пройдите по пути «WWW» → «WWW-домены» и кликните 2 раза на имя необходимого домена.

Смена версии PHP на ISPmanager

В открывшемся окне выбираем версию php и нажимаем “ок”

Смена версии php

Самостоятельно обновили версию PHP, но сайт сломался?

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

[TypeError]
call_user_func_array(): Argument #1 ($callback) must be a valid callback, non-static method COpenstatCounter::OnBeforeProlog() cannot be called statically (0)
#0: call_user_func_array(array, array)
#1: ExecuteModuleEventEx(array)
#2: require_once(string)
#3: require_once(string)
#4: require_once(string)
#5: require(string)
#6: include_once(string)
#7: include_once(string)

Необходимо найти класс COpenstatCounter, и метод OnBeforeProlog, и сделайте его статичным.

Ошибка №2: Неработающий модуль отправки почты SMTP
Чтобы решить проблему в файле var/www/html/vyatsu_new/bitrix/modules/wsrubi.smtp/classes/general/IdnaConvert.php
Исправьте (если не изменяли ранее файл).
строку 421 на $decoded[] = ord($encoded[$k]);
строку 435 на $digit = $this->_decode_digit($encoded[$enco_idx++]);
строку 958 на $output[$out_len] += ord($input[$i]) строку 829 на $v = ord($input);
Причина — «Удалена поддержка устаревших фигурных скобок для доступа к смещению.», отмена вот подтверждение https://www.php.net/manual/ru/migration80.incompatible.php

Ошибка №3: Адаптация шаблона АСПРО под обновление версии php 8.x
TypeError]
call_user_func_array(): Argument #1 ($callback) must be a valid callback, non-static method COptimus::ShowPanel() cannot be called statically (0)
/var/www/bx41608/data/www/lash67.ru/bitrix/modules/main/classes/general/module.php:480
#0: ExecuteModuleEventEx(array)
/var/www/bx41608/data/www/lash67.ru/bitrix/modules/main/include.php:456
#1: require_once(string)
/var/www/bx41608/data/www/lash67.ru/bitrix/modules/main/include/prolog_admin_before.php:34
#2: require_once(string)
/var/www/bx41608/data/www/lash67.ru/bitrix/modules/main/admin/settings.php:16
#3: require_once(string)
/var/www/bx41608/data/www/lash67.ru/bitrix/admin/settings.php:2
Необходимо дождаться обновление шаблона и обновить решение АСПРО

Ошибка №4: [Ux11] Ошибка описания модуля «name.module». Не установлено соединение с сервером обновлений. [Ux11] Ошибка описания модуля «name.module».
шибка может появиться после повышения версии PHP до 8.0 и выше. Сайт при этом работает, но установить или обновить другие решения нельзя, пока сохраняется ошибка.
Решение проблемы:
Исправление в общем случае будет таким: в файле /bitrix/modules/ /install/index.php код:
function ()
заменить на:
function __construct()

Ошибка №5: При выполнении скрипта возникла ошибка. Включить расширенный вывод ошибок можно в файле настроек .settings.php. Решение проблемы:
Подключиться по FTP/SFTP или зайти в панель хостинга, включить вывод ошибок в файле /bitrix/.settings.php:
‘debug’ => true,
После чего на сайте будет выведен текст ошибки:

Ошибка №6: [TypeError] call_user_func_array(): Argument #1 ($callback) must be a valid callback, non-static method COMP\BXE\EventHandlers::AdminContextMenuShow() cannot be called statically (0).
[TypeError]
call_user_func_array(): Argument #1 ($callback) must be a valid callback, non-static method COMP\BXE\EventHandlers::AdminContextMenuShow() cannot be called statically (0)
/var/www//bitrix/modules/main/classes/general/module.php:480
Из текста ошибки сразу не узнать директорию модуля, но данный метод COMP\BXE\EventHandlers::AdminContextMenuShow() принадлежит стороннему модулю.
Решение проблемы:
Исправление в общем случае будет таким: в коде AdminContextMenuShow() нужно правильно объявить статическую функцию:
function AdminContextMenuShow()
Дописать перед началом функции public static::
public static function AdminContextMenuShow()

Или обращайтесь к нам, с удовольствием поделимся опытом или проведем дискуссию разбирая вашу ситуацию.

Успешного Вам обновления!

ВАЖНО! Настоятельно рекомендуем сделать архивную копию.

Оформите заявку на сайте, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.

Источник

Оцените статью