Файлы
Есть два больших типа функций:
- f*() - для работы с ресурсами (например, fopen())
- file*() - для работы с именем файла (например, file_get_contents())
Функции для работы с ресурсами
fopen($filename,$filemode,$use_include_path,$context)
- Открывает файл и возвращает указатель на ресурс в случае успеха.
- Если filename указывает на локальный файл, тогда выполняется попытка открыть поток к этому файлу. Файл должен быть доступен PHP (права доступа на файл это разрешают). Если вы включили безопасный режим или open_basedir, то накладываются дальнейшие ограничения.
- Если PHP установлено, что filename указывает на зарегистрированный протокол и этот протокол зарегистрирован как сетевой URL, PHP выполняет проверку состояния директивы allow_url_fopen. Если она выключена, PHP выдаст предупреждение и вызов fopen закончится неудачей.
- use_include_path - Необязательный третий параметр use_include_path может быть установлен в 1 или TRUE, если вы также хотите провести поиск файла в include_path.
- mode - указывает тип доступа, который вы запрашиваете у потока. Он может быть одним из следующих вариантов:
mode | Описание |
---|---|
r | Открывает файл только для чтения; помещает указатель в начало файла. |
r+ | Открывает файл для чтения и записи; помещает указатель в начало файла. |
w | Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пробует его создать. |
w+ | Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пытается его создать. |
a | Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его создать. |
a+ | Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует - пытается его создать. |
x | Создаёт и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст ошибку уровня E_WARNING. Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL l O_CREAT для внутреннего системного вызова open(2). |
x+ | Создаёт и открывает для чтения и записи; иначе имеет то же поведение что и x. |
c | Открывает файл только для записи. Если файл не существует, то он создается. Если же файл существует, то он не обрезается (в отличии от w), и вызов к этой функции не вызывает ошибку (также как и в случае с x). Указатель на файл будет установлен на начало файла. Это может быть полезно при желании заблокировать файл (смотри flock()) перед изменением, так как использование w может обрезать файл еще до того как была получена блокировка (если вы желаете обрезать файл, можно использовать функцию ftruncate() после запроса на блокировку). |
c+ | Открывает файл для чтения и записи; иначе имеет то же поведение, что и c. |
fread($resource,$length)
- читает до length байт из файлового указателя handle. Чтение останавливается как только было достигнуто одно из следующих условий:
- было прочитано length байт
- достигнут EOF (конец файла)
- стал доступен пакет или произошел таймаут сокета (для сетевых потоков)
- если читаемый поток является буферизованным и не представляет собой обычный файл, то за один раз максимум читается количество байт, равное размеру одной порции данных.
- Возвращает прочтенную строку или FALSE в случае возникновения ошибки.
<?php
// получает содержимое файла в строку
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>
int ftell ( resource $handle )
- Возвращает позицию файлового указателя hanlder.
<?php
// открываем файл и читаем немного данных
$fp = fopen("/etc/passwd", "r");
$data = fgets($fp, 12);
// где же мы ?
echo ftell($fp); // 11
fclose($fp);
?>
bool rewind ( resource $handle )
- Сбрасывает курсор у файлового указателя.
int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )
- Устанавливает смещение в файле, на который ссылается handle. Новое смещение, измеряемое в байтах от начала файла, получается путём прибавления параметра offset к позиции, указанной в параметре whence:
- SEEK_SET - Устанавливает смещение в offset байт.
- SEEK_CUR - Устанавливает смещение в текущее положение плюс offset.
- SEEK_END - Устанавливает смещение в конец файла плюс offset.
- В случае успеха возвращает 0; в противном случае возвращает -1.
<?php
$fp = fopen('somefile.txt', 'r');
// читаем немного данных
$data = fgets($fp, 4096);
// перемещаемся назад к началу файла
// то же самое, что и rewind($fp);
fseek($fp, 0);
?>
bool feof ( resource $handle )
- Проверяет, достигнут ли конец файла.
int fwrite ( resource $handle , string $string [, int $length ] ) и fputs()
- Записывает содержимое string в файловый поток.
- Если передан аргумент length, запись остановится после того, как length байтов будут записаны или будет достигнут конец строки string, смотря что произойдёт первым.
- Возвращает количество записанных байт или FALSE в случае ошибки.
- При попытке записи в файл, открытый только для чтения не будет ошибки, функция лишь вернет FALSE.
fclose($resource)
- Закрывает ресурс
fputcsv($resource,$array)
- Форматирует строку в виде CSV и записывает её в файловый указатель.
fscanf($resource,$format) , fprintf($resource,$format) и fsprintf($resource,$format)
- тоже что и sscanf(), printf() and sprintf() только для ресурсов.
fpassthru($resource)
- Выводит все оставшиеся данные из файлового указателя
fflush($resource)
- Сброс буферизованных данных в файл.
fgetc($resource)
- Считывает символ из файла.
fgetcsv($resource)
- Производит анализ строки на наличие записей в формате CSV и возвращает найденные поля в качестве массива.
fgets($resource)
- Читает строку из файлового указателя.
fgetss($resource)
- Прочитать строку из файла и отбросить HTML-теги.
fnmatch($pattern,$string)
- Проверяет совпадение имени файла с шаблоном.
fstat($resource)
- Собирает статистическую информацию об открытом файле в виде массива.
<?php
// открываем файл
$fp = fopen("/etc/passwd", "r");
// собираем статистику
$fstat = fstat($fp);
// закрываем файл
fclose($fp);
// отображаем только ассоциативную часть
print_r(array_slice($fstat, 13));
/*
Array
(
[dev] => 771
[ino] => 488704
[mode] => 33188
[nlink] => 1
[uid] => 0
[gid] => 0
[rdev] => 0
[size] => 1114
[atime] => 1061067181
[mtime] => 1056136526
[ctime] => 1056136526
[blksize] => 4096
[blocks] => 8
)
*/
?>
ftruncate($resource,$size)
- Урезает файл до указанной длинны.
Функции для работы с именами файлов и директориями
file_exists($filename)
- Проверяет наличие указанного файла или каталога.
is_readable($filename)
- Возвращает TRUE, если файл или директория, указанная в filename существует и доступна для чтения, иначе возвращает FALSE.
is_writable($filename)
- Возвращает TRUE, если файл filename существует и доступен для записи. Аргумент filename может быть именем директории, что позволяет вам проверять директории на доступность для записи.
is_file($filename)
- Возвращает TRUE, если файл существует и является обычным файлом, иначе возвращает FALSE.
is_dir($pathname)
- Определяет, является ли имя файла директорией.
is_link($filename)
- Определяет, является ли файл символической ссылкой.
is_executable($pathname)
- Определяет, является ли файл исполняемым.
file_get_contents($filename,$use_include,$context,$offset)
- Возвращает содержимое файла в строке, начиная с указанного смещения offset и до maxlen байт. В случае неудачи, file_get_contents() вернёт FALSE.
readfile($filename)
- Читает файл и записывает его в буфер вывода.
- Возвращает количество прочитанных из файла байт.
file($filename)
- Читает содержимое файла и помещает его в массив. Каждый элемент массива соответствует строке файла, с символами новой строки включительно.
file_put_contents($filename,$data,$flag)
- Пишет строку в файл.
- Если filename не существует, файл будет создан. Иначе, существующий файл будет перезаписан, за исключением случая, если указан флаг FILE_APPEND.
fileatime($filename)
- Возвращает время последнего доступа к файлу.
filectime($filename)
- Возвращает время изменения индексного дескриптора файла.
fileinode($filename)
- Возвращает номер индексного дескриптора файла.
filemtime($filename)
- Возвращает время последней записи блоков файла, иначе говоря, изменения содержания файла.
filegroup($filename)
- Возвращает идентификатор группы файла в виде числа.
fileowner($filename)
- Возвращает числовой идентификатор владельца указанного файла.
fileperms($filename)
- Возвращает права доступа на указанный файл в числовом виде.
filesize($filename)
- Возвращает размер указанного файла в байтах.
filetype($filename)
- Возвращает тип файла. Возможными значениями являются fifo, char, dir, block, link, file, socket и unknown.
clearstatcache()
- Очищает кэш состояния файлов.
touch($filename,$time)
- Устанавливает время доступа и модификации файла.
- Если файл не существует, он будет создан.
- Если аргумент time не указан, используется текущее время.
stat($filename)
- Возвращает информацию о файле.
tempnam($dir,$prefix)
- Создаёт файл с уникальным именем в определённой директории с правами 0600. Если эта директория не существует, tempnam() может создать файл во временной директории системы и вернуть полный путь к этому файлу, включая его имя.
- Возвращает имя нового временного файла (вместе с путем) или FALSE в случае неудачи.
tmpfile()
- Создаёт временный файл с уникальным именем, открывая его в режиме чтения и записи (w+), и возвращает файловый указатель.
- Этот файл автоматически удаляется после закрытия (например вызовом функции fclose(), или если не осталось ни одной ссылки на указатель файла, возвращаемый tmpfile()), или при завершении работы скрипта.
basename($filename,$suffix)
- Возвращает последний компонент имени из указанного пути.
- Если компонент имени заканчивается на suffix, то он также будет отброшен.
pathinfo($path)
- Возвращает информацию о path в виде ассоциативного массива или строки в зависимости от options.
- Если параметр options не передан, то возвращаемый ассоциативный массив (array) будет содержать следующие элементы: dirname, basename, extension (если есть) и filename.
- Замечание: Если path не содержит расширения, то не будет возвращен элемент extension.
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // начиная с PHP 5.2.0
/*
/www/htdocs/inc
lib.inc.php
php
lib.inc
*/
?>
dirname($filename)
- Возвращает имя родительского каталога из указанного пути.
- Возвращает путь к родительской директории. Если в параметре path не содержится слешей, будет возвращена точка ('.').
disk_free_space($directory) / diskfreespace($directory)
- Возвращает размер доступного пространства в каталоге или в файловой системе.
disk_total_space($directory)
- Функция возвращает общий размер в байтах указанного раздела диска или каталога.
copy($source,$destination)
- Копирует файл source в файл с именем dest.
unlink($filename)
- Удаляет файл.
rename($oldfilename,$newfilename)
- Пытается переименовать oldname в newname, перенося файл между директориями, если необходимо. Если newname существует, то он будет перезаписан.
parse_ini_file($filename)
- Загружает ini-файл, указанный в аргументе filename, и возвращает его настройки в виде ассоциативного массива.
parse_ini_string($string)
- возвращает настройки из строки ini в виде ассоциативного массива.
popen($command,$mode)
- Открывает файловый указатель процесса. Например,
$command = '/path/to/executable 2>&1';
pclose($resource)
- Закрывает файловый указатель на канал, открытый при помощи popen().
Функции для работы с каталогами
mkdir($pathname,$mode)
- Пытается создать директорию, заданную в pathname.
rmdir($pathname)
- Удаляет директорию.
chdir($directory)
- Изменяет текущий каталог PHP на указанный в качестве параметра directory.
chroot($directory)
- Изменяет корневой каталог текущего процесса на переданный в качестве параметра directory и меняет текущий каталог на "/".
opendir($directory)
- Открывает дескриптор каталога для последующего использования с функциями closedir(), readdir() и rewinddir().
closedir($resource)
- Освобождает дескриптор каталога.
readdir($resource)
- Получает элемент каталога по его дескриптору.
scandir($resource,$order)
- Получает список файлов и каталогов, расположенных по указанному пути.
rewinddir($resource)
- Сбросить дескриптор каталога.
getcwd()
- Получает имя текущего рабочего каталога.
dir($directory)
- Возвращает экземпляр класса Directory.