Page 76 - 4636
P. 76
Якщо системні адміністратори приймуть рішення без попередження змінити структуру каталогів
(таке буває на практиці), доведеться змінювати абсолютні шляхи у безлічі сценаріїв.
Якщо шлях не вказаний, система створить файл або буде його шукати в тому ж каталозі, в якому є
сам сценарій. Дії системи будуть іншими, якщо середовище РНР функціонує в рамках тієї чи іншої
оболонки CGI ( Common Gateway Interface - загальний шлюзовий інтерфейс) і залежить від
конфігурації сервера.
У середовищі UNIX як роздільника каталогів використовується прямий слеш ( / ). На Windows-
платформах можна застосовувати як прямий, так і зворотний слеш ( \ ). Якщо використовується
зворотний слеш, то його слід літералізувати (помітити як спеціальний символ), щоб функція fopen
змогла правильно його інтерпретувати. Для цього перед ним достатньо розмістити ще один зворотний
слеш, наприклад, так:
$fp = fopen ("$DOCUMENT_ROOT\\ ..\\orders\\orders.txt", 'w');
Зворотний слеш програмісти застосовують рідко, тому що в результаті код зможе функціонувати
тільки у Windows- середовищах. А якщо використовувати прямий слеш, то код може вільно
працювати в будь-якому середовищі.
Другий параметр функції fopen() - це режим файлу, який повинен мати рядковий тип. Переданий
функції рядок вказує, що саме необхідно зробити з файлом. У даному випадку у функцію fopen()
передається параметр 'w', що означає відкриття файлу для запису. Режими файлу перераховані в табл.
3.1.
Таблиця 3.1 - Режими файлу для функції fopen()
Режим Значення
r Режим читання. Відкриває файл для читання, починаючи з початку файлу.
r+ Режим читання. Відкриває файл для читання і запису, починаючи з початку файлу.
w Режим запису. Відкриває файл для запису, починаючи з початку файлу. Якщо файл вже
існує, його вміст видаляється. Якщо файлу не існує, намагається його створити.
w+ Режим запису. Відкриває файл для запису і читання, починаючи з початку файлу. Якщо
файл вже існує, його вміст видаляється. Якщо файл не існує, намагається його створити.
х Режим обережною запису. Відкриває файл для запису, починаючи з початку файла.
Якщо файл вже існує, він не відкривається, fopen() повертає значення false, a PHP генерує
попередження.
х + Режим обережного запису. Відкриває файл для запису і читання, починаючи з початку
файлу. Якщо файл вже існує, він не відкривається, fopen () повертає значення false, a PHP
генерує попередження.
а Режим додавання. Відкриває файл тільки для додавання (запису), починаючи з кінця
існуючого вмісту, якщо такий є. Якщо файлу не існує, намагається його створити.
а + Режим додавання. Відкриває файл для додавання (запису ) і читання, починаючи з кінця
існуючого вмісту, якщо такий є. Якщо файлу не існує, намагається його створити.
b Бінарний режим. Використовується у поєднанні з одним із інших режимів. Ним можна
скористатися у тих випадках, коли файлова система розрізняє бінарні та текстові файли.
Операційна система Windows розрізняє ці файли, a UNIX - ні. Розробники РНР
рекомендують завжди вказувати цей режим для максимальної переносимості.
Використовується за замовчуванням.
t Текстовий режим. Використовується у поєднанні з одним із інших режимів. Цей режим
актуальний тільки для Windows-систем. Застосовувати його не рекомендованого за
винятком перенесення існуючого коду з опцією b.
У даному прикладі використовуваний режим файлу залежить від того, як передбачається
використати систему. Вище був вибраний рядок ' w', який дозволяє записати у файл тільки одне
73