(PHP 3, PHP 4)
fopen - открывает файл или URL. Описание
int fopen (string filename, string mode [, int use_include_path])
Если filename начинается с "http://" (нечувствительно к регистру), то HTTP 1.0 соединение
открывается со специфицированным сервером, страница запрашивается методом HTTP GET
и указатель файла возвращается в начало тела ответа. 'Host:'-header
отправляется вместе с запросом, чтобы обработать виртуальные хосты на основе имён.
Начиная с PHP 4.3.0, если вы скомпилировали поддержку OpenSSL, вы можете
использовать "https://" для открытия HTTP-соединения через SSL.
Обратите внимание, что указатель файла позволяет вам запрашивать только
body\тело ответа; для запрашивания шапки/header HTTP-ответа вам нужно использовать PHP 4.0.5
или новее; эти шапки будут храниться в переменной $http_response_header.
Начиная с PHP 4.3.0, header-информация может быть запрошена с использованием функции file_get_wrapper_data().
HTTP-соединения являются read-only; вы не можете записывать данные или копировать файлы в HTTP-ресурс.
Версии до PHP 4.0.5 не обрабатывают HTTP-перенаправления. Поэтому директории обязаны иметь ведомые слэши.
Если filename начинается с "ftp://" (нечувствительно к регистру), открывается ftp-соединение
со специфицированным сервером и возвращается указатель на запрашиваемый файл. Если
сервер не поддерживает ftp пассивного режима, это не удастся сделать. Вы
можете открывать файлы для чтения или записи через ftp (но не для того и
другого одновременно). Если удалённый/remote файл уже существует на ftp-сервере
и вы пытаетесь открыть его для записи, это не получится.
Если вам нужно обновить существующие файлы по ftp, используйте
ftp_connect(). Если filename это "php://stdin",
"php://stdout" или "php://stderr", будет открыт соответствующий поток stdio. (Это
появилось в PHP 3.0.13; до этого такие имена файлов, как "/dev/stdin" или
"/dev/fd/0", должны были использоваться для доступа к stdio-потокам.)
Если filename начинается ещё с чего-нибудь, файл будет открыт из файловой системы и будет
возвращён указатель на открытый файл. Если открыть файл не удалось, эта функция возвращает
FALSE. mode может иметь значения:
'r' - Открыть только для чтения; поместить указатель в начало файла.
'r+' - Открыть для чтения и записи; поместить указатель в начало файла.
'w' - Открыть только для записи; поместить указатель в начало файла и
усечь файл до нулевой длины. Если файл не существует, делается попытка создать его.
'w+' - Открыть для чтения и записи; поместить указатель в начало файла
и усечь файл до нулевой длины. Если файл не существует, делается попытка создать его.
'a' - Открыть только для записи; поместить указатель в конец файла.
Если файл не существует, делается попытка создать его.
'a+' - Открыть для чтения и записи; поместить указатель в конец файла.
Если файл не существует, делается попытка создать его.
Примечание: mode может содержать букву
'b'. Это используется только в системах, различающих двоичные и текстовые
файлы (т.е. в Windows. В Unix это бесполезно). Если не нужен, он игнорируется.
Вы можете использовать необязательный третий параметр и установить в него
значение "1", если хотите найти файл также и в include_path.
Пример 1. fopen()
$fp = fopen ("/home/rasmus/file.txt", "r");
$fp = fopen ("/home/rasmus/file.gif", "wb");
$fp = fopen ("http://www.example.com/", "r");
$fp = fopen ("ftp://user:password@example.com/", "w"); |
|
Если у вас проблемы с чтением и записью файлов и вы используете версии
серверных модулей PHP, не забудьте убедиться, что используемые вами файлы и
директории доступны для серверного процесса.
На платформе Windows мнемонизируйте (escape) все обратные слэши в пути к
файлу или используйте обычные слэши.
$fp = fopen ("c:\\data\\info.txt", "r"); |
См. также
fclose(), fsockopen(),
socket_set_timeout() и
popen(). |