Восстановление init.php без использования ftp/ssh-доступа

Проблема:

Cайт без доступа по ftp/ssh, редактировать файлы можно только через панель администратора Битрикса.
Если допустить ошибку при редактировании файла и сохранить его — Битрикс упадет.

Возможное решение:

Оно «в лоб», но может спасти нервы и время.
Суть в том, чтобы перед редактированием делать backup файла init.php, и в случае падения Битрикса свободно разворачивать этот backup обратно по HTTP — просто запросом.

Алгоритм решения:


  1. Загружаем в корневую папку сайта файл init_recovery.php
  2. Перед редактированием init.php в браузере набираем site.ru/init_recovery.php?action=backup. Таким образом мы создаем файл init.php_backup в /bitrix/php_interface/
  3. Редактируем init.php — сохраняем, если все ок и задачи выполнены, init.php_backup можно удалить.
  4. Если допущена ошибка и админка не загружается, набираем в браузере site.ru/init_recovery.php?action=recovery. После этого текущий init.php сохраняется под названием init.php_error (чтобы можно было подкорректировать ошибку потом, не удаляем этот файл), а файл init.php_backup переименовываем в init.php


Все довольны, все ок.

Сам скрипт

<?$action = $_GET["action"];
if ($action == "backup"):
copy ($_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/init.php', $_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/init.php_backup');
	if (file_exists($_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/init.php_backup')):
		echo ('File created');
	else:
		echo ('File created error');
	endif;
elseif ($action == "recovery"):
	rename ($_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/init.php', $_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/init.php_error');
	rename ($_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/init.php_backup', $_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/init.php');
		if (file_exists($_SERVER['DOCUMENT_ROOT'].'/bitrix/php_interface/init.php_error')):
			echo ('Restore completed');
		else:
			echo ('Restore error');
		endif;
endif; ?>
Метки:
1C-Bitrix, init.php, восстановление данных

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