file_put_contents записать файл выше сайта

silmarion

Полезный
Регистрация
21 Июн 2012
Сообщения
194
Реакции
19
Всем привет
подскажите, как можно записать файл выше сайта, чтобы нельзя было получить доступ к нему напрямую по ссылке из браузера, но можно было достать скриптом.

$filename = '../download/'.$infor.'.txt';
// Как путь к сохранению указать выше сайта, и как к нему потом добираться?
Указать абсолютные пути от корня?

$in=preg_replace('|~~~|','\n\r',$v[$a0]);
// По умолчанию переносы строк в тексте замены на ~~~, т.е. текст для удобства импорта идет в 1 строку, а как его правильно сохранять с переносами в файл?

file_put_contents($filename, $in);
 
Полный путь от корня - плохая идея. Забудешь где и получишь много приколов после переезда на другой хостинг.

Лучше используй путь:

Код:
$_SERVER['DOCUMENT_ROOT'].'/../file.txt'
 
а самое простое, прикрыть доступ к файлу при помощи .htaccess
 
а самое простое, прикрыть доступ к файлу при помощи .htaccess
Самое плохое решение.

В то время, как все современные фреймворки стараются в www папке оставить только index.php и папку assets, вы предлагаете решение из прошлого века.

Всегда есть возможность, что .htaccess по каким-то причинам перестанет работать: обновление у хостера, отключение AllowOverride, если на проект поднялась нагрузка, переезд на другой хостинг, смена вебсервера, да много чего еще может быть. А если речь идет про файл с паролями для basic authentication? Его почему-то тоже всегда за пределы www выводят, причем во всех инструкциях и документациях.
 
Полный путь от корня - плохая идея. Забудешь где и получишь много приколов после переезда на другой хостинг.

Лучше используй путь:

Код:
$_SERVER['DOCUMENT_ROOT'].'/../file.txt'
есть момент, что переменная $_SERVER['DOCUMENT_ROOT'] в некоторых случаях может выдавать неправильное значение, тогда лучше уже использовать пути которые строятся вокруг директории, где находится файл, даже при переносе сайта, его структура не меняется (как правило) и оносительный путь будет работать. опять таки - лучше точно указывать куда писать файл (абсолютный путь), скажем посредством вычитки из конфигурационного или что-то типа того. если совсем уже параноию включить - можно закодировать его :)
 
Код:
dirname(__FILE__).'/../file.txt';
или просто
'../file.txt';
если загружающий скрипт в корне сайта
 
Назад
Сверху