Прочитаємо його вміст за допомогою функції file():
<?php
$arr = file ("my_file.html");
foreach($arr as $i => $a) echo $i,": "
htmlspecialchars($a), "<br>";
?>
В результаті на екран буде виведено наступне повідомлення:
0: <h1>Без праці не виймеш і рибку із ставка.</h1>
1: <b>Тише їдеш - далі будешь</b>
Функція file_get_contents
Отже, створювати файл ми навчилися, записувати дані в нього - навчилися, прочитувати дані з файлу - теж навчилися. Але питання: а що коли файлу, з яким ми намагаємося виконати всі ці операції, не існує? Або він неприступний для читання або запису? Очевидно, що у такому разі жодна з вивчених нами функцій працювати не буде і PHP видасть повідомлення про помилку. Щоб відстежувати такого роду помилки, можна використовувати функції file_exists(), is_writable(), is_readable().
Функція file_exists
Синтаксис:
bool file_exists (ім'я файлу або директорії)
Функція file_exists() перевіряє, чи існує файл або директорія, ім'я якої передано їй як аргумент. Якщо директорія або файл у файловій системі серверу існує, то функція повертає TRUE, інакше - FALSE. Результат роботи цієї функції кешується. Відповідно очистити кеш можна, як вже наголошувалося, за допомогою функції clearstatcache(). Для нелокальних файлів використовувати функцію file_exists() не можна.
<?php
$filename = 'c:/users/files/my_file.html';
if (file_exists($filename)) {
print "Файл <b>$filename</b> існує";
} else {
print "Файл <b>$filename</b> Не існує";
}
?>
Приклад 9.8. Використовування функції file_exists()
Функція is_writable
Якщо окрім перевірки існування файлу потрібно взнати ще, чи дозволено записувати інформацію в цей файл, слід використовувати функцію is_writable() або її псевдонім - функцію is_writeable().
Синтаксис:
bool is_writable (ім'я файлу або директорії)
Ця функція повертає TRUE, якщо файл (або директорія) існує і доступний для запису. Доступ до файлу здійснюється під тим обліковим записом користувача, під яким працює сервер (частіше всього це користувач nobody або www). Результати роботи функції is_writable кешуються.
Функція is_readable
Якщо окрім перевірки існування файлу потрібно взнати ще, чи дозволено читати інформацію з нього, потрібно використовувати функцію is_readable().
Синтаксис:
bool is_readable (ім'я файлу)
Ця функція працює подібно функції is_writable().
<?php
$filename = 'c:/users/files/my_file.html';
if (is_readable($filename)) {
print "Файл <b>$filename</b> існує і доступний для читання";
} else {
print "Файл <b>$filename</b> Не існує або Не доступний для читання";
}
?>
Приклад 9.9. Використовування функції is_readable()
Останнє, що ми хочемо вивчити з дій над файлами, - це видалення файлів. Для того, щоб видалити файл за допомогою мови PHP, потрібно скористатися функцією unlink(). Синтаксис цієї функції можна описати таким чином:
bool unlink ( ім’я_файлу)
Дана функція видаляє файл, що має ім'я ім’я_файлу, повертає TRUE у разі успіху цієї операції і FALSE - у разі помилки. Щоб видалити файл, потрібно теж мати відповідні права доступу до нього (наприклад, доступу тільки на читання для видалення файлу недостатньо).
<?php
$filename = 'c:/users/files/my_file.html';
unlink($filename);
// видаляємо файл з ім'ям с:/users/files/my_file.html
?>
Приклад 9.10. Використовування функції unlink()
Тепер вирішимо складнішу і часто виникаючу на практиці задачу завантаження файлу на сервер. Перше, що потрібно зробити, щоб завантажити файл на сервер, це створити html-форму. Для того, щоб за допомогою цієї форми можна було завантажувати файли, вона повинна містити атрибут enctype в тегу form із значенням multipart/form-data, а також елемент input типу file.
Приклад 9.11.
<form enctype="multipart/form-data" action="parse.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Загрузить файл: <input type="file" name="myfile" /><br>
<input type="submit" value="Отправить файл" />
</form>
Приклад 9.11. Форма для завантаження файлу на сервер
Помітимо, що ми додали у формі приховане поле, яке містить в собі максимальний допустимий розмір завантажуваного файлу в байтах. При спробі завантажити файл, розмір якого більше вказаного в цьому полі значення, буде зафіксована помилка. В браузері створена нами форма виглядатиме як рядок для введення тексту з додатковою кнопкою для вибору файлу з локального диска (рис 9.1).

Мал. 9.1. Приклад форми для завантаження файлу на сервер
Тепер потрібно написати скрипт, який оброблятиме одержаний файл.
Вся інформація про завантажений на сервер файл міститься в глобальному масиві $_FILES. Цей масив з'явився починаючи з PHP 4.1.0. Якщо включена директива register_globals, то значення переданих змінних доступні просто по їх іменах.
Якщо ми завантажили з комп'ютера-клієнта файл з ім'ям critics.htm розміром 15136 байт, то скрипт з єдиною командою print_r($_FILES); виведе на екран наступне:
Array ( [myfile] => Array ( [name] => critics.htm
[type] => text/html
[tmp_name] => С:\WINDOWS\TEMP\php49F.tmp
[error] => 0
[size] => 15136
)
)
Взагалі кажучи, масив $_FILES завжди має наступні елементи:
$_FILES['myfile']['name'] - ім'я, яке мав файл на машині клієнта.
$_FILES['myfile']['type'] - mime-тип відправленого файлу, якщо браузер надав цю інформацію. В нашому прикладі це text/html.
$_FILES['myfile']['size'] - розмір завантаженого файлу в байтах.
$_FILES['myfile']['tmp_name'] - тимчасове ім'я файлу, під яким він був збережений на сервері.
$_FILES['myfile']['error'] - код помилки, що з'явилася при завантаженні.
Тут 'myfile' - це ім'я елемента форми, за допомогою якого була проведено завантаження файлу на сервер. Тобто воно може бути іншим, якщо елемент форми назвати інакше. Але інші ключі ( name, type і т. д.) залишаються незмінними для будь-якої форми.
Якщо register_globals=On, то доступні також додаткові змінні, такі як $myfile_name, яка еквівалентна $_FILES['myfile']['name'], і т.п.
Помилок при завантаженні в PHP виділяють п'ять типів і відповідно $_FILES['myfile']['error'] може мати п'ять значень:
0 - помилки не відбулося, файл завантажений успішно
1 - завантажуваний файл перевищує розмір, встановлений директивою upload_max_filesize у файлі настройок php.ini
2 - завантажуваний файл перевищує розмір, встановлений елементом MAX_FILE_SIZE форми html
3 - файл був завантажений частково
4 - файл завантажений не був
Висновок
Підведемо підсумки. В цій лекції ми вивчили, як створювати файли за допомогою мови PHP, як записувати дані у файли за допомогою PHP, як прочитувати з них інформацію різними способами, як перевіряти існування і доступність файлу для запису і читання. Крім того, ми розглянули задачу завантаження файлу на сервер і обговорили основні пов'язані з нею змінні і функції мови PHP.