<?php
/**
* Создание символической ссылки на файл
* автор: Nc_Soft
* 03.01.09
*/
/*
Имеется некоторая защищенная директория (deny from all), в которой лежат файлы
1.mp3
2.mp3
3.mp3 итп
Задача выдать эти файлы с произвольным именем юзеру по запросу
*/
//защищенная директория
$private_dir=$_SERVER['DOCUMENT_ROOT'].'/private';
//создадим доступную директорию public с правами 777
$public_dir=$_SERVER['DOCUMENT_ROOT'].'/public';
/*в директорию public будем класть символические ссылки.
Обращаю внимание, что символические ссылки ничего не весят.
Допустим, мы хотим выдать ссылку на файл /private/1.mp3 в виде
/public/mega_hit_track.mp3
*/
//создаем символическую ссылку
if (symlink($private_dir.'/1.mp3', $public_dir.'/mega_hit_track.mp3')) {
//выдаем ссылку юзеру
echo '<a href="http://'.$_SERVER['HTTP_HOST'].'public/mega_hit_track.mp3">скачать</a>';
}
else {
echo 'ошибка генерации ссылки';
}
/*в папке public создалась символическая ссылка
mega_hit_track.mp3
обращение http://'.$_SERVER['HTTP_HOST'].'public/mega_hit_track.mp3
приведет к скачиванию статичного файла /private/1.mp3 из папки
Преимущества символических ссылок:
-ссылки можно генерировать на лету
-можно сделать несколько разных ссылок на один и тот же файл
-с символическими ссылками можно работать как с файлами и каталогами (удаление/перемешение/переименование)
Недостатки:
-работает только в Linux
*/
?>