Если нужно править init.php, но страшно

Если нужно править init.php, но страшно завалить сайт и доступ есть только через админку ...

Увидел на хабре интереснейший пост.

Если нужно править init.php, но страшно завалить сайт и доступ есть только через админку ...

Увидел на хабре интереснейший пост. 

http://habrahabr.ru/sandbox/73956/

Проблема:

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;
Кількість показів: 3501
08.02.2014

Повернення до списку

Если вам была полезна статья можете отблагодарить автора: