Створення файлу Функція fopen
Вивчити прийоми роботи з файлами в PHP.
Базові відомості:
Створення файлу Функція fopen
Взагалі кажучи, в PHP не існує функції, призначеної саме для створення файлів . Більшість функцій працюють з вже існуючими файлами у файловій системі сервера. Є декілька функцій, які дозволяють створювати тимчасові файли, або, що те ж саме, файли з унікальним для поточної директорії ім'ям. А ось для того, щоб створити звичайний файл, потрібно скористатися функцією, яка відкриває локальний або видалений файл. Називається ця функція fopen().
fopen пов'язує даний файл з потоком управління програми. Причому скріплення буває різним залежно від того, що ми хочемо робити з цим файлом: читати його, записувати в нього дані або робити і те і інше. Синтаксис цієї функції такий:
resource fopen ( ім’я_файлу, тип_доступу
[, use_include_path])
В результаті роботи ця функція повертає покажчик (типу ресурс) на відкритий нею файл. Як параметри цієї функції передаються: ім'я файлу, який потрібно відкрити, тип доступу до файлу (визначається тим, що ми збираємося робити з ним) і, можливо, параметр, що визначає, чи шукати вказаний файл в include_path.
Параметр ім’я_файлу має бути рядком, що містить правильне локальне ім'я файлу або URL-адресу файлу в мережі. Якщо ім'я файлу починається з вказівки протоколу доступу (наприклад, http://... або ftp://...), то інтерпретатор вважає це ім'я адресою URL і шукає обробник вказаного в URL протоколі. Якщо обробник знайдений, то PHP перевіряє, чи дозволено працювати з об'єктами URL як із звичайними файлами (директива allow_url_fopen ). Якщо allow_url_fopen=off, то функція fopen викликає помилку і генерується попередження. Якщо ім'я файлу не починається з протоколу, то вважається, що вказане ім'я локального файлу. Аби відкрити локальний файл, потрібно, аби PHP мав відповідні права доступу до цього файлу.
Параметр use_include_path, встановлений в значення 1 або TRUE, заставляє інтерпретатор шукати вказаний в fopen() файл в include_path. Нагадаємо, що include_path – це директива з файлу налаштувань PHP, задаюча список директорій, в яких можуть знаходитися файли для включення. Окрім функції fopen() вона використовується функціями include() і require().
Параметр тип_доступу може приймати одне з наступних значень
Таблиця значень типу доступу | |
Тип доступу | Опис |
r | Відкриває файл лише для читання; встановлює покажчик позиції у файлі на початок файлу. |
r+ | Відкриває файл для читання і запису; встановлює покажчик файлу на його початок. |
w | Відкриває файл лише для запису; встановлює покажчик файлу на його початок і усікає файл до нульової довжини. Якщо файлу не існує, то намагається створити його. |
w+ | Відкриває файл для запису і для читання; встановлює покажчик файлу на його початок і усікає файл до нульової довжини. Якщо файлу не існує, то намагається створити його. |
а | Відкриває файл лише для запису; встановлює покажчик файлу в його кінець. Якщо файлу не існує, то намагається створити його. |
a+ | Відкриває файл для запису і для читання; встановлює покажчик файлу в його кінець. Якщо файл не існує, то намагається створити його. |
x | Створює і відкриває файл лише для запису; поміщає покажчик файлу на його початок. Якщо файл вже існує, то fopen() повертає false і генерується попередження. Якщо файл не існує, то робиться спроба створити його. Цей тип доступу підтримується починаючи з версії PHP 4.3.2 і працює лише з локальними файлами. |
x+ | Створює і відкриває файл для запису і для читання; поміщає покажчик файлу на його початок. Якщо файл вже існує, то fopen() повертає false і генерується попередження. Якщо файл не існує, то робиться спроба створити його. Цей тип доступу підтримується, починаючи з версії PHP 4.3.2, і працює лише з локальними файлами. |
Отже, аби створити файл, потрібно відкрити неіснуючий файл на запис.
<?php
$h = fopen(“my_file.html”,”w”);
/* відкриває на запис файл my_file.html, якщо він існує, або створює порожній файл з таким ім'ям, якщо його ще немає */
$h = fopen(“dir/another_file.txt”,”w+”); /* відкриває на запис і
читання або створює файл another_file.txt у директорії dir */
$h = fopen(“http://www.server.ru/dir/file.php”,”r”);
/* відкриває на читання файл, що знаходиться по вказаній адресі*/
?>
Створюючи файл, потрібно враховувати, під якою операційною системою ви працюєте, і під якою ОС імовірно цей файл читатиметься. Річ у тому, що різні операційні системи по-різному відзначають кінець рядка. У Unix-подібних ОС кінець рядка позначається \n, у системах типу Windows – \r\n. Windows пропонує спеціальний прапор t для перекладу символів кінця рядка систем типа Unix в свої символи кінця рядка. В протилежність цьому існує прапор b, використовуваний найчастіше для бінарних файлів, завдяки якому такої трансляції не відбувається. Використовувати ці прапори можна, просто дописавши їх після останнього символу вибраного типа доступу до файлу. Наприклад, відкриваючи файл на читання, замість r слід використовувати rt, аби перекодувати всі символи кінця рядка \r\n. Якщо не використовувати прапор b при відкритті бінарних файлів, то можуть з'являтися помилки, пов'язані із зміною вмісту файлу. З міркувань переносимості програм на різні платформи рекомендується завжди використовувати прапор b при відкритті файлів за допомогою fopen().
Якщо відкрити або створити файл за допомогою fopen не удається PHP генерує попередження, а функція fopen повертає як результат своєї роботи значення false. Такого роду попередження можна «подавити» (заборонити) за допомогою символу @ .
Наприклад, така команда не виведе попередження, навіть якщо відкрити файл не удалося:
$h = @fopen(“dir/another_file.txt”,”w+”);
Таким чином, функція fopen() дозволяє створити тільки порожній файл і зробити його доступним для запису.
Дата добавления: 2016-04-02; просмотров: 564;