Как избежать проблем при редактировании init.php без ftp/ssh доступа
Ошибка в файле init.php приводит к полной потере работоспособности сайта и невозможности что-то исправить без доступа к файлу через ftp/ssh напрямую с диска. Такое возможно, например, в случаях:
- У клиента хостинг под Windows, а у вас «серый» IP и ftp не работает.
- Хостинг под Linux, но php и ftp работают из-под разных пользователей и файл недоступен для редактирования по ftp.
- У клиента свой сервер и доступ по ftp он не дает.
Если доступ есть только через веб, то один из наиболее простых способов — вынос всего вашего кода во внешний файл и подключение его примерно так:
if (isset($_GET['noinit']) && !empty($_GET['noinit'])) { $strNoInit = strval($_GET['noinit']); if ($strNoInit == 'N') { if (isset($_SESSION['NO_INIT'])) unset($_SESSION['NO_INIT']); } elseif ($strNoInit == 'Y') { $_SESSION['NO_INIT'] = 'Y'; } } if (!(isset($_SESSION['NO_INIT']) && $_SESSION['NO_INIT'] == 'Y')) { if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/functions.php")) require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/functions.php"); }
Примечание: Параметр в адресной строке noinit=Y — отключает подключение, noinit=N — включает подключение. Свой функционал должен быть размещен (в примере) в
/bitrix/php_interface/functions.php
.Рекомендуется использовать собственное именование ключа. К примеру, nomysuperinit, так как курс в открытом доступе и любой может ознакомиться с этим методом, в том числе и с неблаговидными целями.Хорошо если проверки безопасности и прочего не содержатся в этом файле, к тому случаю если злоумышленник все же угадает как отключить init.php.
При таком подходе вы сможете безболезненно редактировать и допускать ошибки в файле functions.php, не боясь оказаться у разбитого корыта неработающего сайта без возможности как-то повлиять на ситуацию.
Как получить доступ к init.php без фтп (когда лежит сайт)
This piece was both informative and amusing! For more, visit: LEARN MORE. Keen to hear everyone’s views!