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

Тема в разделе "Как сделать...", создана пользователем silmarion, 22 июн 2015.

  1. silmarion

    silmarion

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

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

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

    file_put_contents($filename, $in);
     
  2. BaBL

    BaBL Постоялец

    Регистр.:
    13 ноя 2012
    Сообщения:
    144
    Симпатии:
    87
    Полный путь от корня - плохая идея. Забудешь где и получишь много приколов после переезда на другой хостинг.

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

    Код:
    $_SERVER['DOCUMENT_ROOT'].'/../file.txt'
     
    Шумадан нравится это.
  3. cpuzer

    cpuzer Писатель

    Регистр.:
    19 янв 2015
    Сообщения:
    1
    Симпатии:
    4
    а самое простое, прикрыть доступ к файлу при помощи .htaccess
     
  4. BaBL

    BaBL Постоялец

    Регистр.:
    13 ноя 2012
    Сообщения:
    144
    Симпатии:
    87
    Самое плохое решение.

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

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

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    есть момент, что переменная $_SERVER['DOCUMENT_ROOT'] в некоторых случаях может выдавать неправильное значение, тогда лучше уже использовать пути которые строятся вокруг директории, где находится файл, даже при переносе сайта, его структура не меняется (как правило) и оносительный путь будет работать. опять таки - лучше точно указывать куда писать файл (абсолютный путь), скажем посредством вычитки из конфигурационного или что-то типа того. если совсем уже параноию включить - можно закодировать его :)
     
  6. denverkurt

    denverkurt Denve®

    Регистр.:
    23 дек 2013
    Сообщения:
    685
    Симпатии:
    376
    Код:
    dirname(__FILE__).'/../file.txt';
    или просто
    '../file.txt';
    если загружающий скрипт в корне сайта