Skip to content

Instantly share code, notes, and snippets.

@xTCry
Created November 3, 2022 20:41
Show Gist options
  • Save xTCry/20f10761adfb76bf2ca40dbef69e737a to your computer and use it in GitHub Desktop.
Save xTCry/20f10761adfb76bf2ca40dbef69e737a to your computer and use it in GitHub Desktop.
Bitrix sym links (php)
<?php
function removeLinks()
{
$strError = [];
if (is_link($_SERVER['DOCUMENT_ROOT'] . '/bitrix')) {
unlink($_SERVER['DOCUMENT_ROOT'] . '/bitrix');
} else {
$strError[] = 'Папка bitrix не была ссылкой';
}
if (is_link($_SERVER['DOCUMENT_ROOT'] . '/upload')) {
unlink($_SERVER['DOCUMENT_ROOT'] . '/upload');
} else {
$strError[] = 'Папка upload не была ссылкой';
}
if (is_link($_SERVER['DOCUMENT_ROOT'] . '/local')) {
unlink($_SERVER['DOCUMENT_ROOT'] . '/local');
} else {
$strError[] = 'Папка local не была ссылкой';
}
return $strError;
}
?>
<html>
<head>
<title>Создание ссылок на папки bitrix, local и upload</title>
</head>
<body>
<?php
error_reporting(E_ALL & ~E_NOTICE);
@ini_set('display_errors', 1);
$strError = [];
$path = ($_POST['path']) ? rtrim($_POST['path'], '/\\') : '../core';
if ($_POST['remove']) {
$strError = removeLinks();
echo 'Ссылки были удалены.<br>';
} else if ($_POST['create']) {
$full_path = (preg_match('#^/#', $path)) ? $path : realpath($_SERVER['DOCUMENT_ROOT'] . '/' . $path);
if (!isset($_GET['force']) && file_exists($_SERVER['DOCUMENT_ROOT'] . '/bitrix')) {
$strError[] = 'В текущей папке уже существует папка bitrix. <br> <a href="?force">Пересоздать</a>';
}
if (is_dir($full_path)) {
if (isset($_GET['force']) && is_dir($full_path . '/bitrix')) {
$strError += removeLinks();
}
if (count($strError) < 1 || isset($_GET['force'])) {
if (is_dir($full_path . '/bitrix')) {
if (symlink($path . '/bitrix', $_SERVER['DOCUMENT_ROOT'] . '/bitrix')) {
if (symlink($path . '/upload', $_SERVER['DOCUMENT_ROOT'] . '/upload')) {
if (symlink($path . '/local', $_SERVER['DOCUMENT_ROOT'] . '/local')) {
echo 'Символические ссылки удачно созданы';
} else {
$strError[] = 'Не удалось создать ссылку на папку local, обратитесь к администратору сервера';
}
} else {
$strError[] = 'Не удалось создать ссылку на папку upload, обратитесь к администратору сервера';
}
} else {
$strError[] = 'Не удалось создать ссылку на папку bitrix, обратитесь к администратору сервера';
}
} else {
$strError[] = 'Указанный путь не содержит папку bitrix';
}
}
} else {
$strError[] = 'Неверно указан путь или ошибка прав доступа';
}
}
if (count($strError) > 0) {
echo 'Ошибка!';
echo implode('<br><hr>', $strError);
echo '<br>Исходный путь: <b>' . $full_path . '</b>';
}
?>
<form method="POST" style="border: 1px grey;">
Путь к папке, содержащей папки <i>bitrix</i>, <i>local</i> и <i>upload</i>:
<input name="path" value="<?= htmlspecialchars($path) ?>"><br>
<input type="submit" value="Создать" name="create">
<input type="submit" value="Удалить" name="remove">
</form>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment