fopen() возвращает дескриптор потока resource для файла, имя которого передано через параметр filename. Если filename имеет форму "scheme://...", в качестве имени допускается URL и PHP найдёт обработчки протокола (называемый функцией-обёрткой) для данной схемы (scheme). Если функции обёртки в PHP не найдётся, то будет выведено предупреждение для того, чтобы помочь вам найти возможные проблемы в вашем скрипте и затем попытается открыть filename как обычный регулярный файл.
Если PHP решит, что filename - это локальный файл, функция попытается открыть поток для данного файла. Файл должен быть доступен для интерпретатора PHP, следовательно, вы должны удоставерится, что права доступа выставлены правильно. Если вы включите защищённый режим, или установите директиву open_basedir могут быть применены особенности режима ограничений.
Если PHP решит, что filename - это зарегистрированный протокол, и что протокол зарегистрирован как сетевой, PHP проверит включён ли режим allow_url_fopen. Если он выключен, PHP прекратит выполнение функции и выдаст предупреждение.
Параметр mode определяет режим доступа к открытому потоку и может принимать следующие значения:
'r' открыт только для чтения; размещает файловый указатель в начале файла.
'r+' открыт для чтения и записи; размещает файловый указатель в начале файла.
'w' открыт только для записи; размещает файловый указатель в начале файла и усекает размер файла до нулевого размера. Если файл не существует - пытается создать его.
'w+' открыт для чтения и записи; размещает файловый указатель в начале файла и усекает размер файла до нулевого размера. Если файл не существует - пытается создать его.
'a' открыт только для записи; Размещает файловый указатель в конце файла. Если файл не существует - пытается создать его.
'a+' открыт для чтения и записи; Размещает файловый указатель в конце файла. Если файл не существует - пытается создать его.
'x' открыт только для записи; размещает файловый указатель в начале файла. Если файл уже существует, то fopen() завершается с ошибкой и возвращает FALSE после чего выдаётся предупреждение на уровне E_WARNING. Если файл не существует - осуществляется попытка его создания. Это эквивалентно флагам O_EXCL|O_CREAT для системного вызова open(2).
'x+' открыт для чтения и записи; Если файл уже существует, то fopen() завершается с ошибкой и возвращает FALSE после чего выдаётся предупреждение на уровне E_WARNING. Если файл не существует - осуществляется попытка его создания. Это эквивалентно флагам O_EXCL|O_CREAT для системного вызова open(2).
Необязательный третий параметр use_include_path может быть установлен в '1' или
TRUE если вы хотите так же чтобы функция искала файл в include_path.
Если открытие завершается неудачей, то функция возвращает
FALSE и выдаёт предупреждение уровня E_WARNING. Вы можете использовать символ @ для подавления предупреждений.
Пример кода
<?php
$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");
?>
Если вы столкнулись с неожиданными проблемами в чтении и записи файлов и вами используется серверный модуль PHP, удоставерьтесь, что процесс сервера имеет доступ к файлам и директориям, которые вы используете.
На платформе Windows будьте осторожны с обратными слешами в именах файлов или используйте прямы слеши.
Пример кода
<?php
$handle = fopen("c:\\data\\info.txt", "r");
?>
Замечание: Когда опция safe mode включена, PHP проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID, как и выполняемый скрипт.