Проблема:
Cайт без доступа по ftp/ssh, редактировать файлы можно только через панель администратора Битрикса.
Если допустить ошибку при редактировании файла и сохранить его — Битрикс упадет.
Возможное решение:
Оно «в лоб», но может спасти нервы и время.
Суть в том, чтобы перед редактированием делать backup файла init.php, и в случае падения Битрикса свободно разворачивать этот backup обратно по HTTP — просто запросом.
Алгоритм решения:
- Загружаем в корневую папку сайта файл init_recovery.php
- Перед редактированием init.php в браузере набираем site.ru/init_recovery.php?action=backup. Таким образом мы создаем файл init.php_backup в /bitrix/php_interface/
- Редактируем init.php — сохраняем, если все ок и задачи выполнены, init.php_backup можно удалить.
- Если допущена ошибка и админка не загружается, набираем в браузере 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; ?>