Pull to refresh

Восстановление 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; ?>
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.