Смекни!
smekni.com

Учебник php (стр. 16 из 26)

ftell
Возвращает положение указателя файла.

Синтаксис :
int ftell(int $f)

Функции для определения типов файлов

file_exists
Проверяет существование вызываемого файла.

Синтаксис :
bool file_exists(string filename)

Возвращает true, если файл с именем filename существует на момент вызова. Следует использовать эту функцию с осторожностью. Например, следующий код никуда не годится с точки зрения безопасности:

$fname="/etc/passwd";if(!file_exists($fname)) $f=fopen($fname,"w");else $f=fopen($fname,"r");

Дело в том, что между вызовом file_exists() и открытием файла в режиме w проходит некоторое время, в течение которого другой процесс может вклиниться и подменить используемый нами файл. Данная проблема выходит на передний план при написании сценария счетчика.

Функция не работает с удаленными файлами, файл должен находиться в доступной для сервера файловой системе.
Результаты функции кэшируются, см. функцию clearstatcache().

filetype
Возвращает тип файла.

Синтаксис :
string filetype(string filename)

Возвращает строку, которая описывает тип файла с именем filename. Если такого файла не существует, возвращает false.
После вызова строка будет содержать одно из следующих значений:

file - обычный файл;dir - каталог;link - символическая ссылка;fifo - fifo-канал;block - блочно-ориентированное устройство;char - символьно-ориентированное устройство;unknown - неизвестный тип файла;

is_file
Проверка существования обычного файла.

Синтаксис :
bool is_file(string filename)

Возвращает true, еслиfilename - обычныйфайл.

is_dir
Проверка существования каталога.

Синтаксис :
bool is_dir(string filename)

Возвращает true, если каталог filename существует.

is_link
Проверка существования символической ссылки на файл.

Синтаксис :
bool is_link(string filename)

Возвращает true, если filename - символическая ссылка.

Функция не работает под Windows.

is_readable
Проверка существования файла, доступного для чтения.

Синтаксис :
bool is_readable(string filename)

Возвращает true, если файл может быть открыт для чтения.
Обычно PHP осуществляет доступ к файлу с привелегиями пользователя, запускающего web-сервер (часто "nobody"). Соображения безопасности должны приниматься в расчет.

is_writeable
Проверка существования файла, доступного для записи.

Синтаксис :
bool is_writeable(string filename)

Возвращает true, если в файл можно писать.
Обычно PHP осуществляет доступ к файлу с привелегиями пользователя, запускающего web-сервер (часто "nobody"). Соображения безопасности должны приниматься в расчет.

is_executable
Проверка существования запускаемого файла.

Синтаксис :
bool is_executable(string filename)

Возвращает true, еслифайлfilename - исполняемый.

is_uploaded_file
Проверка существования файла, загруженного методом HTTP POST.

Синтаксис :
bool is_uploaded_file(string filename)

Возвращает true, если файл с именем filename был загружен на сервер посредством HTTP POST.
Часто это полезно, чтобы убедиться, что пользователи из злого умысла не пытались заставить сценарий работать с теми файлами, с которыми им работать не следует, например: /etc/passwd.

Определение параметров файла

stat
Функция собирает вместе всю информацию, выдаваемую операционной системой для указанного файла, и возвращает ее в виде массива.

Синтаксис :
array stat(string $filename)

Этот массив всегда содержит следующие элементы с указанными ключами:

0 - устройство;1 - Номер узла inode;2 - атрибуты защиты файла;3 - число синонимов ("жестких" ссылок) файла;4 - идентификатор uid владельца;5 - идентификатор gid группы;6 - тип устройства;7 - размер файла в байтах;8 - время последнего доступа в секундах, прошедших с 1 января 1970 года;9 - время последней модификации содержимого файла;10 - время последнего изменения атрибутов файла;11 - размер блока;12 - число занятых блоков;

Этот массив помещает информацию, которая доступна в системах Unix. Под Windows многие поля могут быть пусты.

Если $filename задает не имя файла, а имя символической ссылки, то всетаки будет возвращена информация о том файле, на который ссылается эта ссылка (а не о ссылке).

fileatime
Возвращает время последнего доступа к файлу.

Синтаксис :
int fileatime(string filename)

Время выражается в количестве секунд, прошедших с 1 января 1970 года (Unix timestamp). Если файл не обнаружен, возвращает false.
Атрибут времени последнего доступа к файлу изменяется каждый раз, когда данные файла читаются. Так как это сильно снижает производительность при интенсивной работе с файлами и каталогами, часто изменение этого атрибута в операционных системах блокируют, и тогда функция бесполезна.

filemtime
Возвращает время последнего изменения файла или false в случае отсутствия файла.

Синтаксис :
int filemtime(string $filename)

filectime
Возвращает время создания файла.

Синтаксис :
int filectime(string $filename)

filesize
Возвращает размер файла в байтах или false, если файла не существует.

Синтаксис :
int filesize(string $filename)

touch
Устанавливает время модификации.

Синтаксис :
int touch(string $filename [, int $timestamp])

Устанавливает время модификации указанного файла $filename равным $timestamp (в секундах, прошедших с 1 января 1970 года). Если второй параметр не указан, то подразумевается текущее время. Вслучае ошибки возвращает false.

Если файл с указанным именем не существует, он создается пустым.

Функции для работы с именами файлов

basename
Выделяет имя файла из пути.

Синтаксис :
string basename(string $path)

Выделяет основное имя из пути $path
Примеры:

echo basename("/home/somebody/somefile.txt"); // выводит "somefile.txt"echo basename("/"); // ничего не выводитecho basename("/."); // выводит "."echo basename("/./"); // также выводит "."

Функция basename() не проверяет существование файла. Она просто берет часть строки после самого правого слеша и возвращает ее.
Эта функция правильно обрабатывает как прямые, так и обратные слеши под Windows.

dirname
Выделяет имя каталога.

Синтаксис :
string dirname(string $path)

Возвращает имя каталога, выделенное из пути $path. Функция довольно "разумна" и умеет выделять нетривиальные ситуации, которые описаны в примерах:

echo dirname("/home/file.txt"); // выводит "/home"echo dirname("../file.txt"); // выводит ".."echo dirname("/file.txt"); // выводит "/" под Unix,// "\" под Windowsecho dirname("/"); // то же самоеecho dirname("file.txt"); // выводит "."

Если функции dirname() передать просто имя файла, она вернет ".", что означает "текущий каталог".

tempnam
Генерирует уникальное имя файла в определенном каталоге.

Синтаксис :
string tempnam(string $dir, string $prefix)

Генерирует имя файла в каталоге $dir с префиксом $prefix в имени, причем так, чтобы созданный под этим именем в будущем файл был уникален.
Для этого к строке $prefix присоединяется некое случайное число.
Например, вызов tempnam("/tmp","temp") может возвратить /tmp/temp3a6b243c.
Если такое имя нужно создать в текущем каталоге, передайте $dir="."

realpath
Преобразует относительный путь в абсолютный.

Синтаксис :
string realpath(string $path)

Преобразует относительный путь $path в абсолбтный, т.е. начинающийся от корня.
Пример:

echo realpath("../t.php"); // например, /home/t.phpecho realpath("."); // выводит имя текущего каталога

Файл, который указан в параметре $path, должен существовать, иначе функция фозвратит false.

Функции манипулирования целыми файлами

copy
Копирует файл.

Синтаксис :
bool copy(string $src, string $dst)

Копирует файл с именем $src в файл с именем $dst. При этом, если файл $dst на момент вызова существовал, осуществляется его перезапись.
Функция возвращает true, если копирование прошло успешно, а в случае провала - false.

Функция не выполняет переименования файла, если его новое имя расположено в другой файловой системе (на другой смонтированной системе в Unix или на другом диске в Windows).

unlink
Удаление файла.

Синтаксис :
bool unlink(string $filename)

Удаляет файл с именем $filename. В случае неудачи возвращает false, иначе - true.

Надо заметить, что файл удаляется только в том случае, если число "жестких" ссылок на него стало равным 0. Правда, эта схема специфична для Unix-систем.

file
Считывает файл и разбивает его по строкам.

Синтаксис :
list file(string $filename)

Считывает файл с именем $filename целиком и возвращает массив-список, каждый элемент которого соответствует строке в прочитанном файле.
Неудобство этой функции состоит в том, что символы конца строки (обычно \n), не вырезаются из строк файла, а также не транслируются, как это делается для текстовых файлов.

Другие функции

ftruncate
Усекает файл.

Синтаксис :
bool ftruncate(int $f, int $newsize)

Эта функция усекает открытый файл $f до размера $newsize. Разумеется, файл должен быть открыт в режиме, разрешающим запись.
Например, следующий код очищает весь файл:

ftruncate($f,0);

fflush
Немедленная запись всех изменений в файле.

Синтаксис :
void fflush(int $f)

Заставляет PHP немедленно записать на диск все изменения, которые производились до этого с открытым файлом $f. Что это за изменения? Дело в том, что для повышения производительности все операции записи в файл буферизируются: например, вызов fputs($f, "Это строка!") не приводит к непосредственной записи данных на диск - сначало они попадают во внутренний буфер (обычно размером 8К). Как только буфер заполняется, его содержимое отправляется на диск, а сам он очищается, и все повторяется вновь. Особенный выигрыш от буферзации чувствуется в сетевых операциях, когда просто глупо отправлять данные маленькими порциями.