Возврат PHP-кода в рабочее состояние в Битрикс
Основные методы восстановления PHP в Битрикс
Как восстановить повреждённые PHP-файлы ядра Битрикс с помощью встроенного скрипта restore.php?
Наиболее эффективный способ - использовать штатный скрипт restore.php. Он находится в корневой папке сайта (а также в /bitrix/). Скрипт автоматически сравнивает версию установленного ядра с эталонной из официального репозитория и заменяет изменённые или отсутствующие файлы.
Пошаговая инструкция:
- Откройте в браузере
http://ваш-сайт/restore.php. - При появлении запроса введите логин и пароль администратора.
- Выберите режим «Восстановление файлов ядра».
- Нажмите кнопку «Запустить» и дождитесь окончания операции.
// Пример вывода при успешном восстановлении:
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 ./bitrixXampp 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-dependenciesPhp ini memory (настройка memory_limit в php)
Загрузка... complete. Все PHP-файлы заменены на версии из репозитория.
Проблема: могут быть конфликты версий с другими установленными модулями. Решение: зафиксировать версию в composer.json.
Расширенные примеры и выводы
Детальный пример работы restore.php с обработкой ошибок
Скрипт restore.php поддерживает параметры командной строки для автоматизации. Запустите его через SSH:
php restore.php --mode=core --check-only --no-interactionOutput: 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-backupAll 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.
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При обнаружении ошибок администратор получит уведомление.