ProfiPHPProfiPHP
Категория: Функции для работы с файловой системой

Функция Fopen

Функция Fopen открывает файл или URL.
resource fopen( string $filename, string $mode [, bool $use_include_path = false [, resource $context ]] )
Функция Fopen закрепляет именованный ресурс, указанный в аргументе Filename, за потоком.

Параметр Filename являет собой именованный ресурс. Если Filename передан в форме "scheme://...", он считается URL'ом и PHP проведет поиск обработчика протокола (обертка) для этой схемы. Если ни одна обертка не закреплена за протоколом, PHP выдаст замечание, чтобы помочь вам отследить потенциальную проблему в скрипте и затем продолжит выполнение, как если бы Filename указывал на обыкновенный файл.

Если PHP установлено, что Filename указывает на локальный файл, тогда выполняется попытка открыть поток к этому файлу. Файл должен быть доступен PHP, так что вам следует убедиться, что права доступа на файл это разрешают. Если вы включили безопасный режим или open_basedir, то накладываются дальнейшие ограничения.

Если PHP установлено, что Filename указывает на зарегистрированный протокол и этот протокол зарегистрирован как сетевой URL, PHP выполняет проверку состояния директивы Allow_url_fopen. Если она выключена, PHP выдаст предупреждение и вызов Fopen закончится неудачей.

На платформе Windows, необходимо экранировать все обратные слеши в пути к файлу или использовать прямые слеши.

Параметр Mode указывает тип доступа, который запрашиваете у потока. Он может быть одним из следующих вариантов:

'r' - Открывает файл только для чтения и помещает указатель в начало файла.

'r+' - Открывает файл для чтения и записи и помещает указатель в начало файла.

'w' - Открывает файл только для записи и помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пробует его создать.

'W+' - Открывает файл для чтения и записи и помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пытается его создать.

'a' - Открывает файл только для записи и помещает указатель в конец файла. Если файл не существует - пытается его создать.

'A+' - Открывает файл для чтения и записи и помещает указатель в конец файла. Если файл не существует - пытается его создать.

'x' - Создает и открывает только для записи и помещает указатель в начало файла. Если файл уже существует, вызов Fopen закончится неудачей, вернет FALSE и выдаст ошибку уровня E_WARNING.

'x+' - Создает и открывает для чтения и записи и в остальном имеет то же поведение что и 'x'.

'c' - Открывает файл только для записи. Если файл не существует, то он создается. Если же файл существует, то он не обрезается (в отличии от 'w'), и вызов к этой функции не вызывает ошибку (также как и в случае с 'x'). Указатель на файл будет установлен на начало файла.

'c+' - Открывает файл для чтения и записи. В остальном имеет то же поведение, что и 'c'.

Разные семейства операционных систем имеют разные соглашения относительно окончания строк. Когда вы пишете текст и хотите вставить разрыв строки, вы должны использовать правильные символы (или символ) для вашей операционной системы. Системы семейства Unix используют \n в качестве символа конца строки, системы семейства Windows используют \r\n в качестве символов окончания строки и системы семейства Macintosh используют \r в качестве символа конца строки.

Если вы используете неверный символ конца строки при редактировании файлов, вы можете обнаружить, что при открытии эти файлы неправильно отображаются.

Windows предлагает флаг режима текстовой трансляции ('t'), который автоматически переведёт \n в \r\n во время работы с файлом. И наоборот - вы также можете использовать 'b', чтобы принудительно включить бинарный режим, в котором ваши данные не будут преобразовываться. Чтобы использовать эти режимы, укажите 'b' или 't' последней буквой параметра Mode.

Из соображений портируемости, настоятельно рекомендуется всегда использовать флаг 'b' при открытии файлов с помощью Fopen.

Необязательный третий параметр Use_include_path может быть установлен в '1' или TRUE, если вы также хотите провести поиск файла в Include_path.

Параметр Context задает контекст.

Функция Fopen возвращает указатель на файл в случае успешной работы, или FALSE в случае ошибки.

Если открыть файл не удалось, будет сгенерирована ошибка уровня E_WARNING. Вы можете использовать оператор @ для подавления этой ошибки.

Пример использования:
echo $fopendb = fopen( $_SERVER['DOCUMENT_ROOT'].'/access.log', 'r' );
Результат выполнения:
Resource id #3

Добавить комментарий

Имя:
Текст комментария: