Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vtoraya_chast_uchebnika_po_WWW_Okonchat_variant...doc
Скачиваний:
33
Добавлен:
27.09.2019
Размер:
6.06 Mб
Скачать

5.2.4. Уточнение возможных ссылок на файлы и особенности работы с ними

После ознакомления с понятиями возможных адресов файлов, становятся понятными нижеследующее правила и примеры использования дорожек до файлов.

Итак, открываемый файл может находиться в локальной файловой системе, существовать в виде стандартного потока ввода/вывода или представлять файл в удаленной системе, принимаемой средствами HTTP или FTP.

Параметр файл может задаваться в нескольких формах, перечисленных ниже:

a. Если параметр содержит имя локального файла, функция fopen( ) открывает этот файл и возвращает дескриптор файла (или, как его ещё называют, манипулятор файла).

b. Если параметр задан в виде php://stdin, php://stdout или php://stderr, открывается соответствующий стандартный поток ввода/вывода.

c. Если параметр начинается с префикса http://, функция открывает подключение HTTP к серверу и возвращает манипулятор для указанного файла.

d. Если параметр начинается с префикса ftp://, функция открывает подключение FTP к серверу и возвращает манипулятор для указанного файла. В этом случае следует обратить особое внимание на два обстоятельства: если FTP-сервер не поддерживает пассивный режим FTP, вызов fopen( ) завершается неудачей. Более того, FTP-файлы открываются либо для чтения, либо для записи. Различают пассивный и активный режимы FTP – сервера. При работе в пассивном режиме сервер ожидает подключения со стороны клиентов. При работе в активном режиме сервер сам устанавливает соединение с клиентом. По умолчанию обычно используется активный режим.

Если по каким-либо причинам открыть файл не удаётся, система регистрирует ошибку открытия, информацию о которой можно получить (отобразить) в браузере с помощью функции die( ).

Ниже приводится дополнительные примеры открытия файла функцией fopen.

$file = "userdata.txt"; // Имя некоторого файла присваивается переменной $file

$fh = fopen($file, "a+") or die("File ($file) does not exist!");

Следующий фрагмент открывает подключение к сайту PHP http://www.php.net:

$site = http://www.php.net; // Переменной $site присваивается имя сервера, доступного через HTTP

$sh = fopen($site., "r"); //Дескриптор файла(манипулятор) связывается с индексной страницей php.net

Ещё несколько иллюстраций:

$handle = fopen("/home/rasmus/file.txt", "r");

$handle = fopen("/home/rasmus/file.gif", "wb");

$handle = fopen("http://www.example.com/", "r");

$handle = fopen("ftp://user:password@example.com/somefile.txt", "w")

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

<?php

$handle = fopen("c:\\data\\info.txt", "r");

?>

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

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