Возврат PHP-кода в рабочее состояние в Битрикс

Раздел: Разработка на PHP и Битрикс -> Настройка PHP

Основные методы восстановления PHP в Битрикс

Как восстановить повреждённые PHP-файлы ядра Битрикс с помощью встроенного скрипта restore.php?

Наиболее эффективный способ - использовать штатный скрипт restore.php. Он находится в корневой папке сайта (а также в /bitrix/). Скрипт автоматически сравнивает версию установленного ядра с эталонной из официального репозитория и заменяет изменённые или отсутствующие файлы.

Пошаговая инструкция:

  1. Откройте в браузере http://ваш-сайт/restore.php.
  2. При появлении запроса введите логин и пароль администратора.
  3. Выберите режим «Восстановление файлов ядра».
  4. Нажмите кнопку «Запустить» и дождитесь окончания операции.
// Пример вывода при успешном восстановлении:
Checking /bitrix/modules/main/classes/general/version.php ... OK
Checking /bitrix/modules/main/include.php ... REPLACED
...
Restore completed successfully. Total files checked: 1254, replaced: 3.

Php выделить память (выделение памяти php)

Файлы ядра обновлены. Ошибок не обнаружено.

Php ini timezone (настройка часового пояса в php (date.timezone))

Типичные проблемы:

  • Скрипт не открывается - проверьте права доступа к файлу restore.php (должен быть 644).
  • Ошибка доступа - требуется авторизация с правами администратора.
  • Файл restore.php отсутствует - загрузите его из свежей копии дистрибутива Битрикс (скачайте с официального сайта).

Как восстановить PHP-файлы из резервной копии файловой системы?

Если у вас есть резервная копия папки /bitrix/ (например, от Beget или через cron), можно просто заменить повреждённые файлы. Этот метод подходит, когда restore.php недоступен или не справляется с индивидуальными модификациями.

# Пример восстановления из bz2-архива
cd /home/user/public_html
tar -xjf backup_bitrix_2025-01-15.tar.bz2 ./bitrix

Xampp php ini (настройка php.ini в xampp)

Файлы заменены. Важно: не затрагивайте папки /bitrix/cache/ и /bitrix/managed_cache/, они регенерируются автоматически.

Php ini sessions (настройка сессий в php (session.*))

Ошибки: несовпадение версий ядра (старый бэкап может не подойти к новой версии модулей). Решение - использовать бэкап, сделанный непосредственно перед сбоем.

Как проверить целостность PHP-файлов через административный интерфейс Битрикс?

В разделе «Настройки» - «Инструменты» - «Проверка и восстановление файлов» (если установлен модуль «Техподдержка»). Этот инструмент сравнивает контрольные суммы.

# Вывод в админке:
Проверка файлов ядра...
Нарушений: 2
Файл /bitrix/modules/main/classes/general/cache.php - изменён (права 755 вместо 644)

Php ini extension (настройка расширений php (extension_dir, extension))

После исправления прав файлы автоматически восстанавливаются.

ограничение памяти php (ограничение памяти php)

Проблема: модуль «Техподдержка» может отсутствовать на тарифе «Стандарт». Решение - установить его из Marketplace.

Как вручную заменить PHP-файлы из официального дистрибутива?

Скачайте полный дистрибутив той же версии (номер версии виден в /bitrix/modules/main/classes/general/version.php). Распакуйте и скопируйте нужные файлы через FTP или SSH.

# Пример копирования только ключевых модулей
rsync -av --exclude='bitrix/cache/' --exclude='bitrix/managed_cache/' bitrix_distr/bitrix/ /home/user/public_html/bitrix/

изменить настройки php (изменение настроек php)

Файлы обновлены. После замены сбросьте кеш: /bitrix/admin/cache.php?clear_all=Y

Index php page info (страница phpinfo())

Ошибка: версия дистрибутива не совпадает - возможны конфликты в БД. Решение: сначала обновите ядро через bitrix_setup.php.

Как восстановить PHP-зависимости через Composer, если проект использует bitrix/composer?

Для проектов, где Битрикс подключён через Composer (например, при использовании D7 ядра), выполните обновление пакетов.

cd /home/user/project
composer update bitrix/core --with-dependencies

Php ini memory (настройка memory_limit в php)

Загрузка... complete. Все PHP-файлы заменены на версии из репозитория.

Проблема: могут быть конфликты версий с другими установленными модулями. Решение: зафиксировать версию в composer.json.

- Php ini linux (настройка php.ini в linux/ubuntu)
- Php ini upload (настройка загрузки файлов в php (upload_max_filesize, post_max_size))
- Change php (изменение php)

Расширенные примеры и выводы

Детальный пример работы restore.php с обработкой ошибок

Скрипт restore.php поддерживает параметры командной строки для автоматизации. Запустите его через SSH:

Пример
php restore.php --mode=core --check-only --no-interaction
Output:
Bitrix Site Checker v. 22.0.0
Checking file integrity:
[OK] /bitrix/modules/main/lib/orm/query.php
[ERROR] /bitrix/admin/iblock_edit.php - checksum mismatch
[ERROR] /bitrix/php_interface/dbconn.php - file not found in official distr
Suggested action: run restore with --replace option

Команда для реального восстановления:

Пример
php restore.php --mode=core --replace --force --no-backup
All mismatched files (2) replaced. Backup of original files saved to /bitrix/backup/.

Проблема: если файл dbconn.php отсутствует в дистрибутиве (это пользовательский файл), restore.php не создаст его заново. В таких случаях нужно восстанавливать отдельно.


Пример восстановления из резервной копии с проверкой целостности

Пример
# Создайте список файлов до замены
find /home/user/public_html/bitrix -type f -name '*.php' > before_restore.txt
tar -xzf backup_20250115.tar.gz -C /home/user/public_html --overwrite
find /home/user/public_html/bitrix -type f -name '*.php' > after_restore.txt
# Сравните
diff before_restore.txt after_restore.txt | head -20
Если различия показывают только новые файлы (из-за обновления), всё хорошо. Если удалены пользовательские файлы - верните их из дополнительного бэкапа.

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


Пример ручной замены конкретного модуля через Git

Если ядро хранится в Git, можно откатить изменения:

Пример
cd /home/user/project
git checkout HEAD -- bitrix/modules/sale/install/index.php
# Или полностью вернуть состояние коммита
git reset --hard a1b2c3d4
Файл index.php возвращён к оригиналу из коммита a1b2c3d4.
Важно: не используйте reset --hard на папках с пользовательскими настройками (bitrix/php_interface).

Пример автоматизации через cron

Для профилактики можно настроить регулярную проверку:

Пример
# Запускаем каждую ночь проверку и восстановление (если найдены изменения)
0 3 * * * /usr/bin/php /home/user/public_html/restore.php --mode=core --check-only 2>&1 | mail -s "Bitrix integrity check" admin@site.ru
При обнаружении ошибок администратор получит уведомление.

Восстановление PHP в Битрикс - comments

En
битрикс restore php (php)