fopen

Открывает файл и привязывает его к дескриптору.
Синтаксис:

int fopen(string $filename, string $mode, bool $use_include_path=false)

Открывает файл с именем $filename в режиме $mode и возвращает дескриптор открытого файла. Если операция "провалилась", то функция возвращает false. Необязательный параметр use_include_path говорит о том, что, если задано относительное имя файла, его следует искать также и списке путей, используемом инструкциями include() и require().
Обычно этот параметр не используют.
Параметр $mode может принимать следующие значения:
r

Файл открывается только для чтения. Если файла не существует, вызов регистрирует ошибку. После удачного открытия указатель файла устанавливается на его первый байт, т.е. на начало.
r+

Файл открывается одновременно на чтение и запись. Указатель текущей позиции устанавливается на ее первый байт. Если файла не существует, возвращает false. Если в момент записи указатель файла установлен где-то в середине файла, то данные запишутся прямо поверх уже имеющихся, а не раздвинут их, при необходимости увеличив размер файла.
w

Создает новый пустой файл. Если на момент вызова уже был файл с таким именем, то он предварительно уничтожается. В случае неверно заданного имени файла вызов "проваливается".

w+

Аналогичен r+, но если файл изначально не существовало, создает его. После этого с файлом можно работать как в режиме чтения, так и записи. Если файл существовал до момента вызова, его содержимое удаляется.
a

Открывает существующий файл в режиме записи, и при этом сдвигает указатель текущей позиции за последний байт файла. Как водится, вызов не успешен в случае отсутствия файла.
a+

Открывает файл в режиме чтения и записи, указатель файла устанавливается на конец файла, при этом содержимое файла не уничтожается. Отличается от a тем, что если файла изначально не существовало, то он создается. Этот режим полезен, если вам нужно что-то дописать в файл, но вы не знаете, создан ли уже такой файл.
Но это еще не полное описание параметра $mode. Дело в том, что в конце любой из строк r,w,a,r+,w+ и a+
может находиться еще один необязательный символ - b или t. Если указан b (или не указан вообще никакой),
то файл открывается в режиме бинарного чтения/записи. Если же это t, то для файла устанавливается режим трансляции символа перевода строки, т.е. он воспринимается как текстовой.

tmpfile

Создает новый временный файл с уникальным именем и открывает его на чтение и запись.
Синтаксис:

int tmpfile()

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

popen()

Открывает файловый указатель процесса (PHP 3, PHP 4, PHP 5)

Описание:

resource popen(string command, string mode)

Открывает поток к процессу, выполняемую при помощи форкинга (forking) команды, заданной в command.

Возвращает файловый указатель, идентичный возвращаемому функцией fopen(), за исключением того, что он односторонний (может быть использован только для чтения или записи) и должен быть закрыт при помощи pclose(). Этот указатель может быть использован с fgets(), fgetss() и fwrite().

В случае возникновения ошибки, возвращает FALSE.

Замечание: Если вы ищите двустороннюю связь, используйте proc_open().

Пример использования функции popen()

<?php
$handle = popen("/bin/ls", "r");
?>

Если команда для выполнения не может быть найдена, будет возвращён действующий ресурс. Это может выглядить странно, но имеет смысл; это даёт вам возможность получить доступ к любому сообщению об ошибке, которое вернёт оболочка:

<?php
error_reporting(E_ALL);

/* Добавляем перенаправление чтобы прочитать stderr. */
$handle = popen('/path/to/spooge 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>

Замечание: В случае работы в безопасном режиме, вы можете запускать что-либо только в пределах safe_mode_exec_dir. В настоящее время, использование .. в пути запрещено

Внимание

В случае работы в безопасном режиме, все слова, следующие за начальной командой, рассматриваются как единый аргумент. То есть echo y | echo x будет работать как echo "y | echo x".

fclose

Закрывает файл, открытый предварительно функцией fopen().

Синтаксис:

int fclose(int $fp)

Возвращает false, если файл закрыть не удалось (например, что-то с ним случилось или же разорвалась связь с удаленным хостом).
В противном случае возвращает значение "истина".

Всегда нужно закрывать FTP- и HTTP-соединения, потому что в противном случае
"беспризорный" файл приведет к неоправданному простою канала и излишней загрузке сервера. Кроме того, успешно закрыв соединение, вы будете уверены в том, что все данные были доставлены без ошибок.

pclose()

Закрывает файловый указатель процесса (PHP 3, PHP 4, PHP 5)

Описание:

int pclose(resource handle)

Закрывает файловый указатель на канал, открытый при помощи popen().

Файловый указатель должен быть действующим и должен быть возвращён успешным вызовом функции popen().

Возвращает статус выхода завершающегося процесса.

fread

Читает из открытого файла определенное количество символов.
Синтаксис:

string fread(int $f, int $numbytes)

Читает из файла $f $numbytes символов и возвращает строку этих символов. После чтения указатель файла продвигается к следующему после прочитанного блока позициям. Если $numbytes больше, чем можно прочитать из файла, возвращается то, что удалось считать. Этот прием можно использовать, если вам нужно считать в строку файл целиком. Для этого просто задайте в $numbytes очень большое число. Но если вы заботитесь об экономии памяти в системе, так поступать не рекомендуется.

readfile()

Выводит файл (PHP 3, PHP 4, PHP 5)

Описание:

int readfile ( string filename [, bool use_include_path [, resource context]] )

Читает файл и записывает его в буфер вывода.

Параметры:

filename - имя читаемого файла
use_include_path - необязательный параметр; если TRUE, поиск файла будет происходить также в include_path (директива php.ini).
context - потоковый ресурс среды окружения.

Возвращает количество прочитанных из файла байт. В случае возникновения ошибки вернёт FALSE, если только функция не была вызвана как @readfile(), и выведет сообщение об ошибке.

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция "fopen wrappers".

Пример. Принудительный старт скачивания файла

<?php
$file = 'monkey.gif';

if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>

В результате работы вышеприведенного кода появится нечто подобное:

fflush()

Сброс буфера вывода в файл (PHP 4 >= 4.0.1, PHP 5)

Описание:

bool fflush ( resource handle )

Данная функция осуществляет сброс буферизованных данных в файл, на который указывает handle.

Возвращает TRUE в случае успешного завершения, FALSE - в противном случае.

Указатель на файл должен быть корректным и указывать на файл, успешно открытый функциями fopen() или fsockopen().

stream_set_write_buffer()

Устанавливает файловый буфер данного потока (PHP 4 >= 4.3.0, PHP 5)

Описание:

int stream_set_write_buffer ( resource stream, int buffer )

Вывод в файл с использованием fwrite() использует в штатном режиме буфер 8K. Это значит, что если имеется два процесса, желающих вывести данные в один и тот же поток вывода (файл), каждый из этих процессов приостанавливается после вывода каждых 8К для того, чтобы позволить вывести данные другому процессу. Stream_set_write_buffer() устанавливает буферизацию для операций записи в данный файлоуказующий поток. Если buffer установлен 0, то операция записи является небуферизованной. Это гарантирует, что все процессы записи fwrite() завершаются до того, как другим процессам открывается доступ к записи в тот же поток вывода.

Функция возвращает 0 при успешном завершении, или EOF если запрос прерывания ввода/вывода был отклонен.

Следующий пример демонстрирует использование stream_set_write_buffer() для создания небуферизованного потока

<?php
$fp = fopen($file, "w");
if ($fp) {
stream_set_write_buffer($fp, 0);
fwrite($fp, $output);
fclose($fp);
}
?>

set_file_buffer()

Псевдоним функции stream_set_write_buffer() (PHP 3 >= 3.0.8, PHP 4 >= 4.0.1, PHP 5)

Описание: функция является псевдонимом для фукнции stream_set_write_buffer().

highlight_file()

Вывод содержимого файла с цветовой разметкой.

Синтаксис:

boolean highlight_file(string filename);

Имя или путь файла указывается в аргументе. Цвета выделения синтаксиса определяются в файле конфигурации PHP. Возвращает true или false при ошибке.

Например, чтобы заставить сервер Apache при получении запроса с URL, содержащего значение вида "http://имя.сервера/source/путь/к/файлу.php", выводит листинг файла "http://имя.сервера/source/путь/к/файлу.php", сделайте следующее. Добавьте в файл httpd.conf следующий фрагмент:

# Используем директиву "ForceType" чтобы указать,
# что значение source в URL - не каталог, а имя сценария PHP
<Location /source>
ForceType application/x-httpd-php
</Location>

Создайте в корневом web-каталоге следующий файл с именем source:

<HTML><HEAD>
<TITLE>Source Display</TITLE>
</HEAD>
<BODY bgcolor=#FFEEDD>

<?php
$script = getenv ("PATH_TRANSLATED");
if(!$script) {
echo "<BR><B>ERROR: Укажите имя сценария</B><BR>";
} else {
if(ereg("(.php|.inc)$",$script)) {
echo "<H1>Листинг файла: $PATH_INFO</H1>n<hr>n";
if(!@highlight_file($script))
echo "Ошибка вывода файла";
} else {
echo "<H1>ERROR: Показываются только листинги PHP файлов </H1>";
}
}

echo "<HR>Распечатано: ".date("Y/M/d H:i:s",time());

?>

</BODY>
</HTML>

fwrite

Запись в файл.
Синтаксис:

int fwrite(int $f, string $str)

Записывает в файл $f все содержимое строки $str. Эта функция составляет пару для fread(), действуя
"в обратном направлении".

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

fgets

Читает из файла одну строку, заканчивающуюся символом новой строки n.
Синтаксис:

string fgets(int $f, int $length)

Этот символ также считывается и включается в результат. Если строка в файле занимает больше $length-1 байтов, то возвращаются только ее $length-1 символов. Функция полезна, если вы открыли файл и хотите "пройтись" по всем ее строкам. Однако даже в этом случае (и быстрее) будет воспользоваться функцией File().
Стоит также заметить, что эта функция (как и функция fread()) в случае текстового режима в Windows заботиться о преобразовании пар rn в один символ n.

fputs

Полный аналог fwrite().

Синтаксис:

int fputs(int $f, string $str)

fgetcsv()

Функция для работы с одним из форматов файлов, в котором может сохранять данные Excel.
Синтаксис:

list fgetcsv(int $f, int $length, char $delim=",")

Функция читает строку из файла, заданного дескриптором $f, и разбивает ее по символу $delim. Параметр $delim должен обязательно быть строкой из одного символа, в противном случае принимается во внимание только первый символ этой строки. Функция возвращает получившийся список или false, если строки кончились. Параметр $length задает максимальную длину строки точно так же, как это делается в fgets().
Пустые строки в файле не игнорируются, а возвращаются как список из одного элемента - пустой строки.
Пример:

$f=fopen("file.csv","r") or die("Ошибка");
for($i=0; $data=fgetcsv($f, 1000, ";"); $i++) {
$num = count($data);
if($num==1 && $data[0]==="") continue;
echo "<h3>Строка номер $i ($num полей):</h3>";
for($c=0; $c<$num; $c++)
print "[$c]: $data[$c]<br>";
}
fclose($f);

file_get_contents()

Получить содержимое файла в виде одной строки (PHP 4 >= 4.3.0, PHP 5)

Описание:

string file_get_contents(string filename 
[, bool use_include_path [, resource context [, int offset [, int maxlen]]]])

Данная функция идентична функции file() с той только разницей, что содержимое файла возвращается в строке, начиная с указанного смещения offset и до maxlen байтов. В случае неудачи, file_get_contents() вернёт FALSE.

Использование функции file_get_contents() наиболее предпочтительно в случае необходимости получить содержимое файла целиком, поскольку для улучшения производительности функция использует алгоритм 'memory mapping' (если поддерживается операционной системой).

Замечание: Если вы открываете URI содержащий спецсимволы, такие как пробел, вам нужно закодировать URI при помощи urlencode().

Список изменений

Версия Описание
5.0.0 Добавлена поддержка контекста.
5.1.0 Добавлены аргументы offset и maxlen.

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция "fopen wrappers". Смотрите более подробную информацию об определении имени файла в описании функции fopen(), а также список поддерживаемых протоколов URL в Прил. M.

Внимание

При использовании SSL, Microsoft IIS нарушает протокол, закрывая соединение без отправки индикатора close_notify. PHP сообщит об этом как о "SSL: Fatal Protocol Error" в тот момент, когда вы достигнете конца данных. Чтобы обойти это, вы должны установить error_reporting на уровень, исключающий E_WARNING. PHP версий 4.3.7 и старше умеет определять, что на стороне сервера находится проблемный IIS и не выводит предупреждение. Если вы используете fsockopen() для создания ssl:// сокета, вы сами отвечаете за определение и подавление этого предупреждения.

file_put_contents()

Записать строку в файл (PHP 5)

Описание:

int file_put_contents(string filename, mixed data [, int flags [, resource context]])

Функция идентична последовательному вызову функций fopen(), fwrite() и fclose(). Возвращаемым функцией значением является количество записанных в файл байтов.

Параметр flags может принимать значение FILE_USE_INCLUDE_PATH и/или FILE_APPEND. Используйте FILE_USE_INCLUDE_PATH с осторожностью.

Также вы можете передать (одномерный) массив в качестве параметра data. Это будет эквивалентно вызову file_put_contents($filename, join('', $array)).

Начиная с версии PHP 5.1.0, вы также можете передавать ресурс потока в качестве аргумента data. В результате оставшийся буфер этого потока будет скопирован в указанный файл. Это похоже на использование stream_copy_to_stream().

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция "fopen wrappers".

file()

Читает содержимое файла и помещает его в массив (PHP 3, PHP 4, PHP 5)

Описание:

array file (string filename [, int use_include_path [, resource context]])

Данная функция идентична функций readfile() с той разницей, что file() возвращает содержимое прочитанного файла в виде массива. Каждый элемент возвращенного массива содержит соответствующую строку с символами конца строки. В случае ошибки, функция file() возвращает FALSE.

Вы можете указать необязательный параметр use_include_path, равный "1", если хотите, чтобы поиск файла также производился в каталогах, указанных директивой include_path.

<?php
// Получить содержимое файла в виде массива. В данном примере мы используем
// обращение по протоколу HTTP для получения HTML-кода с удаленного сервера.
$lines = file('http://www.example.com/');

// Осуществим проход массива и выведем номера строк и их содержимое в виде HTML-кода.
foreach ($lines as $line_num => $line) {
echo "Строка #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}

// Второй пример. Получим содержание web-страницы в виде одной строки.
// См.также описание функции file_get_contents().
$html = implode('', file ('http://www.example.com/'));
?>

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция "fopen wrappers". Смотрите более подробную информацию об определении имени файла в описании функции fopen(), а также список поддерживаемых протоколов URL в Прил. M.

Замечание: Каждая строка в полученном массиве будет завершаться символами конца строки, поэтому, если вам будет нужно избавиться от этих символов, вы будете должны использовать функцию rtrim().

Замечание: Если у вас возникают проблемы с распознаванием PHP окончания строк при чтении файлов на Macintosh-совместимом компьютере или при чтении файлов, созданных на Macintosh-совместимом компьютере, необходимо включить опцию auto_detect_line_endings.

Замечание: Начиная с PHP 4.3.0, вы можете использовать функцию file_get_contents() для получения содержимого файла в виде строки.

Начиная с PHP 4.3.0, функция file() корректно обрабатывает двоичные данные.

Замечание: Поддержка контекста была добавлена в PHP 5.0.0.

Внимание

При использовании SSL, Microsoft IIS нарушает протокол, закрывая соединение без отправки индикатора close_notify. PHP сообщит об этом как о "SSL: Fatal Protocol Error" в тот момент, когда вы достигнете конца данных. Чтобы обойти это, вы должны установить error_reporting на уровень, исключающий E_WARNING. PHP версий 4.3.7 и старше умеет определять, что на стороне сервера находится проблемный IIS и не выводит предупреждение. Если вы используете fsockopen() для создания ssl:// сокета, вы сами отвечаете за определение и подавление этого предупреждения.

fpassthru()

Выводит все оставшиеся данные из файлового указателя (PHP 3, PHP 4, PHP 5)

Описание:

int fpassthru (resource handle)

Читает указанный файловый указатель с текущей позиции до EOF (конца файла) и записывает результат в буфер вывода.

Если происходит ошибка, fpassthru() возвращает FALSE. В ином случае, fpassthru() возвращает количество символов, прочтнных из handle и переданных на вывод.

Указатель на файл должен быть корректным и указывать на файл, успешно открытый функциями fopen() или fsockopen().

Вам может понадобиться вызвать rewind() чтобы сбросить файловый указатель на начало файла, если вы уже записывали данные в файл.

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

Замечание: Во время использования fpassthru() на бинарном файле в сисиемах Windows, вы должны убедиться в том, что открыли файл в бинарном режиме при помощи добавления b к режиму открытия файла, использованному в fopen().

Рекомендуется использовать флаг b при работе с бинарными файлам даже если ваша система этого не требует, чтобы обеспечить более высокую портируемость скриптов.

Использование fpassthru() с бинарными файлами

<?php
// открываем файл в бинарном режиме
$name = ".\public\dev\img\ok.png";
$fp = fopen($name, 'rb');

// отправляем нужные заголовки
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// скидываем картинку и останавливаем выполнение скрипта
fpassthru($fp);
exit;

?>

feof

Указатель конца файла.
Синтаксис:

int feof(int $f)

Возвращает true, если достигнут конец файла (то есть если указатель файла установлен за концом файла).

Пример:

$f=fopen("myfile.txt","r");
while(!feof($f))
{ $str=fgets($f);
// Обрабатываем очередную строку $str

}
fclose($f);

fseek

Устанавливает указатель файла на определенную позицию.
Синтаксис:

int fseek(int $f, int $offset, int $whence=SEEK_SET)

Устанавливает указатель файла на байт со смещением $offset (от начала файла, от его конца или от текущей позиции, в зависимости от параметра $whence).
Это может и не сработать, если дескриптор $f ассоциирован не с обычным локальным файлом, а с соединением HTTP или FTP.

Параметр $whence задает с какого места отсчитывается смещение $offset. В PHP для этого существуют три константы, равные, соответственно, 0, 1 и 2:

SEEK_SET

устанавливает позицию начиная с начала файла;

SEEK_CUR

отсчитывает позицию относительно текущей позиции;

SEEK_END

отсчитывает позицию относительно конца файла;

В случае использования последних двух констант параметр $offset вполне может быть отрицательным (а при применении SEEK_END он будет отрицательным наверняка).
В случае успешного завершения эта функция возвращает 0, а в случае неудачи -1.

ftell

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

int ftell(int $f)

rewind()

Сбрасывает курсор у файлового указателя (PHP 3, PHP 4, PHP 5)

Описание:

bool rewind(resource handle)

Сбрасывает курсор файлового указателя handle на начало файлового потока.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Файловый указатель должен быть доступным и ссылаться на файл, успешно открытый при помощи fopen().

Замечание: Если вы открыли файл в режиме "дописать в конец" ("a"), любые данные, которые вы записываете, будут дописаны в конец файла, независимо от положения курсора.

file_exists

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

bool file_exists(string filename)

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

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.

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

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 задает не имя файла, а имя символической ссылки, то всетаки будет возвращена информация о том файле, на который ссылается эта ссылка (а не о ссылке).

fileinode()

Получить номер inode файла (PHP 3, PHP 4, PHP 5)

Описание:

int fileinode ( string filename )

Функция возвращает номер inode файла или FALSE в случае возникновения ошибки.

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми упаковщиками url.

fileowner()

Получить идентификатор владельца файла (PHP 3, PHP 4, PHP 5)

Описание:

int fileowner (string filename)

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

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми упаковщиками url.

fileperms()

Получить информацию о правах на файл (PHP 3, PHP 4, PHP 5)

Описание:

int fileperms ( string filename )

Функция возвращает информацию о правах на указанный файл или FALSE в случае возникновения ошибки.

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми упаковщиками url. Список упаковщиков, поддерживаемых семейством функций stat(), смотрите в Прил. M.

Вывод прав в восмеричном представлении

<?php
echo substr(sprintf('%o', fileperms('/tmp')), -4);
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
?>

Это выведет:

1777
0644

Вывод полной информации о правах

<?php
$perms = fileperms('/etc/passwd');

if (($perms & 0xC000) == 0xC000) {
// Сокет
$info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
// Символическая ссылка
$info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
// Обычный
$info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
// Специальный блок
$info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
// Директория
$info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
// Специальный символ
$info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
// Поток FIFO
$info = 'p';
} else {
// Неизвестный
$info = 'u';
}

// Владелец
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
(($perms & 0x0800) ? 's' : 'x' ) :
(($perms & 0x0800) ? 'S' : '-'));

// Группа
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
(($perms & 0x0400) ? 's' : 'x' ) :
(($perms & 0x0400) ? 'S' : '-'));

// Мир
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
(($perms & 0x0200) ? 't' : 'x' ) :
(($perms & 0x0200) ? 'T' : '-'));

echo $info;
?>

Результат:

-r--r--r--

fnmatch()

Совпадает ли имя файла с шаблоном (PHP 4 >= 4.3.0, PHP 5)

Описание:

bool fnmatch ( string pattern, string string [, int flags] )

fnmatch() проверяет, совпадает ли переданный параметр string с указанным шаблоном подстановок оболочки (shell wildcard) pattern.

Эта функция полезна при рабоде с именами файлов, хотя может быть использована и на обычной строке. Среднестатистический пользователь знаком с подстановками оболочки, как минимум в их простейшей форме из подстановок '?' и '*', так что использование fnmatch() вместо ereg() или preg_match() для поиска в пользовательской части сайта может быть намного удобнее для пользователей, не знакомых с регулярными выражениями.

Проверяет, соответствует ли цвет шаблону подстановок оболочки.

<?php
if (fnmatch("*gr[ae]y", $color)) {
echo "some form of gray ...";
}
?>

На данный момент эта функция недоступна в Windows и других POSIX-несовместимых системах.

fstat()

Получает информацию о файле используя открытый файловый указатель (PHP 4, PHP 5)

Описание:

array fstat (resource handle)

Собирает статистическую информацию о открытом файле по файловому указателю handle. Эта функция похожа на stat(), за исключением того, что она работает с открытым файловым указателем, а не именем файла.

Возвращает массив со статистической информацией на файл; формат массива подробно описан на странице описания функции stat().

Пример использования функции fstat()

<?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
)

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

is_writable()

Определяет, доступен ли файл для записи (PHP 4, PHP 5)

Описание:

bool is_writable (string filename)

Возвращает TRUE, если файл filename существует и доступен для записи. Аргумент filename может быть именем директории, что позволяет вам проверять директории на доступность для записи.

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

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми упаковщиками url

lstat()

Получает информацию о файле или символической ссылке (PHP 3 >= 3.0.4, PHP 4, PHP 5)

Описание:

array lstat (string filename)

Собирает статистику на файл или символическую ссылку с именем filename. Эта функция идентична функции stat(), за исключением того, что если filename является символической ссылкой, возвращается статус символической ссылки, а не того файла, на который она указывает.

Обратитесь к странице руководства функции stat() для получения информации о структуре массива, который возвращает lstat().

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми упаковщиками url.

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.

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

chmod

Изменяет режим доступа к файлу или каталогу(PHP3, PHP4, PHP5)

Описание:

bool chmod (string filename, int mode)

Осуществляет попытку изменения режима доступа файла или каталога, переданного в параметре filename на режим, переданный в параметре mode.

Обратите внимание, что значение параметра mode не переводится автоматически в восьмеричную систему счисления, поэтому строки (такие, как, например, "g+w") не будут работать должным образом. Чтобы удостовериться в том, что режим был установлен верно, предваряйте значение, передаваемое в параметре mode, нулем (0):

<?php
chmod("/somedir/somefile", 755); // десятичное, неверный способ
chmod("/somedir/somefile", "u+rwx,go+rx"); // строка, неверный способ
chmod("/somedir/somefile", 0755); // восьмеричное, верный способ
?>

Значение параметра mode состоит из трех восьмеричных чисел, определяющих уровень доступа для владельца файла, для группы, в которую входит владелец, и для других пользователей, соответственно. Число, определяющее уровень пользователя, может быть вычислено путем суммирования значений, определяющих права:

1 - доступ на выполнение,
2 - доступ на запись,
4 - доступ на чтение.

Более подробно о системе прав в системах Unix вы можете узнать с помощью команд 'man 1 chmod' and 'man 2 chmod'.

<?php
//Доступ на запись и чтение для владельца, нет доступа для других
chmod("/somedir/somefile", 0600);
// Доступ на запись и чтение для владельца, доступ на чтение для других
chmod("/somedir/somefile", 0644);
// Полный доступ для владельца, доступ на чтение и выполнение для других
chmod("/somedir/somefile", 0755);
// Полный доступ для владельца, доступ на чтение и выполнение для группы владельца
chmod("/somedir/somefile", 0750);
?>

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Замечание: Текущим пользователем является пользователь, от имени которого выполняется PHP. Возможно, что этот пользователь будет отличаться от пользователя, под именем которого вы получаете доступ к командной оболочке или учетной записи FTP.

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

Замечание: Когда безопасный режим включён, PHP проверяет имеет ли файл или директория, с которой вы работаете, такой же UID, как и выполняемый скрипт. Кроме того, вы не можете устанавливать SUID, SGID и "липкие" биты.

Источник: http://www.php.ru/manual/function.chmod.html

file_exists()

Проверить наличие указанного файла или каталога (PHP 3, PHP 4, PHP 5)

Описание:

bool file_exists ( string filename )

Возвращзает TRUE, если файл или каталог с именем, указанным в параметре filename, существует; возвращает FALSE в обратном случае.

На платформах Windows, для проверки наличия файлов на сетевых ресурсах, используйте имена, подобные //computername/share/filename или \\computername\share\filename.

Проверка существования файла

<?php
$filename = '/path/to/foo.txt';

if (file_exists($filename)) {
echo "The file $filename exists";
} else {
echo "The file $filename does not exist";
}
?>

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми упаковщиками url.

filegroup()

Получить идентификатор группы файла (PHP 3, PHP 4, PHP 5)

Описание:

int filegroup ( string filename )

Функция возвращает идентификатор группы файла в виде числа. Для получения имени группы в виде строки используйте функцию posix_getgrgid(). В случае возникновения ошибки функция возвращает FALSE и генерируется сообщение об ошибке уровня E_WARNING.

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми упаковщиками url.

basename

Выделяет имя файла из пути.
Синтаксис:

string basename(string $path)

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

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

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

Эта функция правильно обрабатывает как прямые, так и обратные слеши под Windows.

dirname

Выделяет имя каталога.
Синтаксис:

string dirname(string $path)

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

echo dirname("/home/file.txt"); // выводит "/home"
echo dirname("../file.txt"); // выводит ".."
echo dirname("/file.txt"); // выводит "/" под Unix, "" под Windows
echo 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.php
echo realpath("."); // выводит имя текущего каталога

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

rename

(PHP 3, PHP 4, PHP 5)

rename -- Переименовывает файл или директорию
Описание

bool rename ( string oldname, string newname [, resource context] )

Пытается переименовать oldname в newname.
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Пример использования функции rename()

<?phprename("/tmp/tmp_file.txt", "/home/user/login/docs/my_file.txt");
?>


Замечание: В версиях PHP ниже 4.3.3, функция rename() не могла переименовать файлы, находящиеся на другом разделе в ОС, основанных на *nix.
Замечание: Начиная с версии PHP 5.0.0, функция rename() также может быть использована с некоторыми обвёртками URL.

Замечание: Обвёртка, используемая в oldname ОБЯЗАНА совпадать с обвёрткой, используемой в newname.
Замечание: Атрибут context был добавлен начиная с версии PHP 5.0.0.

glob()

Находит файловые пути, совпадающие с шаблоном (PHP 4 >= 4.3.0, PHP 5)

Описание:

array glob ( string pattern [, int flags])

Функция glob() ищет все пути, совпадающие с шаблоном pattern согласно правилам, используемым в функции glob() библиотеки libc, которые похожи на правила, используемые большинством распространённых оболочек. Раскрытие тильды или подстановки параметров не совершаются.

Возвращает массив, который содержит совпадающие файлы/директории или FALSE в случае ошибки.

Допустимые флаги:

GLOB_MARK - Добавляет слеш к каждому возвращаемому предмету
GLOB_NOSORT - Возвращает файлы в таком виде, в котором они содержатся в директории (без сортировки)
GLOB_NOCHECK - Возвращает шаблон поиска, если с его помощью не был найден ни один файл.
GLOB_NOESCAPE - Обратные слеши не экранируют метасимволы
GLOB_BRACE - Раскрывает {a,b,c} для совпадения с 'a', 'b' или 'c'
GLOB_ONLYDIR - Возвращает только директории, совпадающие с шаблоном

Замечание: В версиях ниже PHP ниже 4.3.3 GLOB_ONLYDIR был не доступен в Windows и других системах, не использующих библиотеку GNU C.

Удобный способ, как при помощи glob() можно заменить opendir() и её друзей.

<?php
foreach (glob("*.txt") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
?>

Результат будет примерно таким:

funclist.txt size 44686
funcsummary.txt size 267625
quickref.txt size 137820

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

pathinfo()

Возвращает информацию о пути к файлу (PHP 4 >= 4.0.3, PHP5)

Описание:

array pathinfo(string path [, int options])

pathinfo() возвращает ассоциативный массив, который содержит информацию о пути path. Возвращаемый массив состоит из следующих элементов: dirname, basename и extension.

Вы можете указать, какие элементы будут возвращены при помощи необязательного параметра options. Он состоит из PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION и PATHINFO_FILENAME (появилась в PHP 5.2.0). По умолчанию возвращаются все элементы.

Пример использования функции pathinfo()

<?php
$path_parts = pathinfo('/www/htdocs/index.html');

echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
?>

Результат:

/www/htdocs
index.html
html

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), не вырезаются из строк файла, а также не транслируются, как это делается для текстовых файлов.

move_uploaded_file()

Перемещает загруженный файл в новое место (PHP 4 >= 4.0.3, PHP 5)

Описание:

bool move_uploaded_file(string filename, string destination)

Эта функция проверяет, является ли файл filename загруженным на сервер (переданным по протоколу HTTP POST). Если файл действительно загружен на сервер, он будет перемещён в место, указанное в аргументе destination.

Если filename не является загруженным файлов, никаких действий не предпринимается и move_uploaded_file() возвращает FALSE.

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

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

Замечание: На move_uploaded_file() не распространяются нормальные UID-ограничения режима безопасный режим. Это не является нарушением безопасности, потому что move_uploaded_file() оперирует лишь теми файлами, которые загружены на сервер через PHP. Функция move_uploaded_file() принимает во внимание как безопасный режим, так и open_basedir. Тем не менее, ограничения накладываются лишь на параметр destination, чтобы разрешить перемещение загруженных файлов, так как параметр filename может конфликтовать с этими ограничениями. move_uploaded_file() гарантирует безопасность этой операции, работая лишь с теми файлами, которые были загружены через PHP.

Внимание

Если файл destination уже существует, он будет перезаписан.

ftruncate

Усекает файл.
Синтаксис:

bool ftruncate(int $f, int $newsize)

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

ftruncate($f,0);

highlight_file()

Вывод содержимого файла с цветовой разметкой.

Синтаксис:

boolean highlight_file(string filename);

Имя или путь файла указывается в аргументе. Цвета выделения синтаксиса определяются в файле конфигурации PHP. Возвращает true или false при ошибке.

Например, чтобы заставить сервер Apache при получении запроса с URL, содержащего значение вида "http://имя.сервера/source/путь/к/файлу.php", выводит листинг файла "http://имя.сервера/source/путь/к/файлу.php", сделайте следующее. Добавьте в файл httpd.conf следующий фрагмент:

# Используем директиву "ForceType" чтобы указать,
# что значение source в URL - не каталог, а имя сценария PHP
<Location /source>
ForceType application/x-httpd-php
</Location>

Создайте в корневом web-каталоге следующий файл с именем source:

<HTML><HEAD>
<TITLE>Source Display</TITLE>
</HEAD>
<BODY bgcolor=#FFEEDD>

<?php
$script = getenv ("PATH_TRANSLATED");
if(!$script) {
echo "<BR><B>ERROR: Укажите имя сценария</B><BR>";
} else {
if(ereg("(.php|.inc)$",$script)) {
echo "<H1>Листинг файла: $PATH_INFO</H1>n<hr>n";
if(!@highlight_file($script))
echo "Ошибка вывода файла";
} else {
echo "<H1>ERROR: Показываются только листинги PHP файлов </H1>";
}
}

echo "<HR>Распечатано: ".date("Y/M/d H:i:s",time());

?>

</BODY>
</HTML>

fflush

Немедленная запись всех изменений в файле.
Синтаксис:

void fflush(int $f)

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

set_file_buffer

Устанавливает размер буфера.
Синтаксис:

int set_file_buffer(int $f, int $size)

Эта функция устанавливает размер буфера, о котором говорилось выше, для указанного открытого файла $f.
Чаще всего она используется так:

set_file_buffer($f,0);

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

flock

Портируемое рекомендательное запирание файлов (PHP 3 >= 3.0.7, PHP 4, PHP 5)

Описание:

bool flock(resource handle, int operation [, int &wouldblock])

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

Замечание: flock() является обязательным под Windows.

flock() применяется к handle, который должен быть указателем на открытый файл. Параметр operation может принимать следующие значения:

- Чтобы установить общее запирание (чтение), установите operation в значение LOCK_SH (или 1, в случае версии PHP ниже 4.0.1).
- Чтобы установить эксклюзивное запирание (запись), установите operation в значение LOCK_EX (или 2, в случае версии PHP ниже 4.0.1).
- Чтобы отпереть файл (после общего или эксклюзивного запирания), установите operation в значение LOCK_UN (или 3, в случае версии PHP ниже 4.0.1).
- Если вы не хотите, чтобы flock() блокировал файл при запирании, добавьте LOCK_NB (или 4, при использовании версии PHP ниже 4.0.1) к параметру operation.

flock() позволяет вам реализовывать простую модель чтения/записи, которая может быть использована практически на любой платформе (включая большинство проивзодных от Unix платформ, и даже Windows). Необязательный третий аргумент устанавливается в TRUE, если запирание также блокирует (код ошибки EWOULDBLOCK). Блокировка снимается при помощи этой же функции fclose() (которая также автоматически вызывается при завершении выполнения скрипта).

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример использования функции flock()

<?php
$fp = fopen("/tmp/lock.txt", "w+");
if (flock($fp, LOCK_EX)) { // выполнить эксплюзивное запирание
fwrite($fp, "Что-нибудь пишем\n");
flock($fp, LOCK_UN); // отпираем файл
} else {
echo "Не могу запереть файл !";
}
fclose($fp);
?>

Замечание: Из-за того, что функции flock() необходим указатель на файл, вам может понадобиться воспользоваться специальным запирающим файлом для того, чтобы ограничить доступ к файлу, который вы намерены очищать путём открытыя его в режиме записи (используя "w" или "w+" в качестве аргумента функции fopen()).

Внимание

flock() не будет работать на NFS и многих других сетевых файловых системах. Обратитесь к документации вашей операционной системы для получения дополнительной информации.

В некоторых операционных системах flock() реализован на уровне процессов. При использовании многопоточных серверных API, таких как ISAPI, вы не можете полагаться на flock() для защиты ваших файлов от дугих PHP-скриптов, которые работают в параллельном потоке на том же сервере!

flock() не поддерживается на старых файловых системах вроде FAT и его производных, так что всегда будет возвращать FALSE в этом окружении (это особенно касается пользователей Windows 98).

parse_ini_file()

Обрабатывает конфигурационный файл (PHP 4, PHP 5)

Описание:

array parse_ini_file (string filename [, bool process_sections])

parse_ini_file() загружает ini-файл, указанный в аргументе filename, и возвращает его настройки в виде ассоциативного массива. Установив последний аргумент process_sections в TRUE, вы получаете многомерный массив, который включает как название отдельных настроек, так и секции. По умолчанию process_sections равен FALSE

Замечания:

• Эта функция не имеет никакого отношения к файлу php.ini. К моменту выполнения вашего скрипта, он уже обработан. Эта функция может быть использована для загрузки настроек вашего собственного приложения.
• Если значение в ini-файле содержит прочие символы, кроме букв и цифр, оно должно заключаться в двойные кавычки (").
• Начиная с версии PHP 4.2.1, на поведение этой функции влияет безопасный режим и open_basedir.
• Начиная с версии PHP 5.0, эта функция также обрабатывает переводы строк в значениях.

Существует зарезервированные слова, которые вы не можете использовать в качестве ключей в ini-файлах. Такими словами являются следующие: null, yes, no, true и false.

Структура ini-файла похожа на структуру php.ini.

Константы также могут быть обработаны в ini-файле, так что если вы объявите константу в виде значения для ini-файла до вызова parse_ini_file(), она (константа) будет правильно обработана. Таким образом обрабатываются только значения. Например:

Содержимое sample.ini

; Это пример файла настроек
; Комментарии начинаются с ';', как в php.ini

[first_section]
one = 1
five = 5
animal = BIRD

[second_section]
path = /usr/local/bin
URL = "http://www.example.com/~username"

Пример использования функции parse_ini_file()

<?php

define('BIRD', 'Dodo bird');

// Обрабатываем без секций
$ini_array = parse_ini_file("sample.ini");
print_r($ini_array);

// Обрабатываем с секциями
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);

?>

Результат:

Array
(
[one] => 1
[five] => 5
[animal] => Dodo bird
[path] => /usr/local/bin
[URL] => http://www.example.com/~username
)
Array
(
[first_section] => Array
(
[one] => 1
[five] => 5
[animal] = Dodo bird
)

[second_section] => Array
(
[path] => /usr/local/bin
[URL] => http://www.example.com/~username
)

)

Ключи и имена секций, состоящие из цифр, будут обработаны как целые числа в PHP, поэтому числа, начинающиеся с 0 будут считаться восьмиричными, а начинающиеся с 0x - шестнадцатиричными.

disk_total_space()

Возвращает объем каталога (PHP 4 >= 4.1.0, PHP 5)

Описание:

float disk_total_space(string directory)

Функция возвращает размер в байтах указанного раздела диска.

Пример использования disk_total_space()

<?php
// $df содержит размер "/"
$df = disk_total_space("/");

// Под Windows:
disk_total_space("C:");
disk_total_space("D:");
?>

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

diskfreespace()

Псевдоним функции disk_free_space() (PHP 3 >= 3.0.7, PHP 4, PHP 5)

Описание: Эта функция является псевдонимом для фукнции disk_free_space().

disk_free_space()

Получить размер доступного пространства в каталоге (PHP 4 >= 4.1.0, PHP 5)

Описание:

float disk_free_space(string directory)

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

Пример использования функции disk_free_space()

<?php
$df = disk_free_space("/");
// $df содержит размер свободного места в каталоге "/"

// Под Windows:
disk_free_space("C:");
disk_free_space("D:");
?>

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

clearstatcache()

Очищает кэш состояния файлов (PHP 3, PHP 4, PHP 5)

Описание:

void clearstatcache(void)

Когда вы используете функции stat(), lstat() или любую из функций, перечисленных в приведенном ниже списке, PHP кеширует результаты их выполнения для обеспечения большей производительности. Однако, в некоторых случаях вам может потребоваться очистка этого кэша. Например, когда ваш скрипт несколько раз проверяет состояние одного и того же файла, который может быть изменен или удален во время выполнения скрипта.

Обратите внимание, что PHP не кэширует информацию о несуществующих файлах. Так что если вы вызовите file_exists() на несуществующем файле, она будет возвращать FALSE до тех пор, пока вы не создадите этот файл. Если же вы создадите файл, она будет возвращать TRUE даже если затем вы его удалите.

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

Список функций, результаты выполнения которых кешируются: stat(), lstat(), file_exists(), is_writable(), is_readable(), is_executable(), is_file(), is_dir(), is_link(), filectime(), fileatime(), filemtime(), fileinode(), filegroup(), fileowner(), filesize(), filetype() и fileperms().

mkdir

Создание каталога.
Синтаксис:

bool mkdir(string $name, int $perms)

Создает каталог с именем $name и правами доступа perms. Права доступа для каталогов указываются точно так же, как и для файлов. Чаще всего значение $perms устанавливают равным 0770 (предваряющий ноль обязателен -
он указывает PHP на то, что это - восьмеричная константа, а не десятичное число).

Пример:

mkdir("my_directory",0755);
// создает подкаталог в текущем каталогеmkdir("/data");
// создает подкаталог data в корневом каталоге

В случае успеха функция возвращает true, иначе - false.

rmdir

Удаление каталога.
Синтаксис:

bool rmdir(string $name)

Удаляет каталог с именем $name.
Каталог должен быть пустым, а его атрибуты должны позволять это.
В случае успеха функция возвращает true, иначе - false.

chdir

Смена текущего каталога.
Синтаксис:

int chdir(string $directory);

Изменяет текущий PHP каталог на directory. Возвращает FALSE если не может изменить, TRUE если смена произошла. Параметр $directory может определять и относительный путь, задающийся от текущего каталога.
Примеры:

chdir("/tmp/data"); // переходим по абсолютному пути
chdir("./js"); // переходим в подкаталог текущего каталога
chdir(".."); // переходим в родительский каталог
chdir("~/data"); // переходим в /home/пользователь/data (для Unix)

getcwd

Возвращает полный путь текущего директория

Синтаксис:

string getcwd()

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

Если такой путь не может быть отслежен, вызов "проваливается" и возвращается false.

diskfreespace

Определяет свободное пространство в каталоге
Синтаксис:

float diskfreespace (string directory);

Данная функция возвращает в байтах свободное пространство в каталоге directory, то есть в соответствующей ей файловой системе или на разделе диска.
Пример:

$diskspace=diskfreespace("/");
// Тем самым мы определили свободное место в корневой директории "/"

chroot()

Сменить корневой каталог (PHP 4 >= 4.0.5, PHP 5)

Описание:

bool chroot ( string directory )

Изменяет корневой каталог текущего процесса на переданный в качестве параметра каталог. Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки..

Данная функция доступна только в том случае, если ее поддерживает ваша операционная система и вы используете методы вызова CLI, CGI или Embed SAPI.

Замечание: Для Windows-платформ эта функция не реализована.

scandir()

(PHP 5)

scandir — Получает список файлов и каталогов, расположенных по указанному пути

Описание

array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )

Возвращает array, содержащий имена файлов и каталогов, расположенных по пути, переданном в параметре directory.

Список параметров

directory - Сканируемый каталог.
sorting_order - По умолчанию, сортировка производится в алфавитном порядке по возрастанию. Если необязательный параметр sorting_order установлен в значение SCANDIR_SORT_DESCENDING, сортировка производится в алфавитном порядке по убыванию. Если же он установлен в значение SCANDIR_SORT_NONE, то сортировка не производится.
context - За описанием параметра context обратитесь к разделу "Потоки" данного руководства.

Возвращаемые значения

Возвращает array имен файлов в случае успеха или FALSE в случае ошибки. Если directory не является каталогом, возвращается FALSE и генерируется сообщение об ошибке уровня E_WARNING.

Пример #1 Простой пример использования функции scandir()

<?php
$dir = '/tmp';
$files1 = scandir($dir);
$files2 = scandir($dir, 1);

print_r($files1);
print_r($files2);
?>

Результатом выполнения данного примера будет что-то подобное:

Array
(
[0] => .
[1] => ..
[2] => bar.php
[3] => foo.txt
[4] => somedir
)
Array
(
[0] => somedir
[1] => foo.txt
[2] => bar.php
[3] => ..
[4] => .
)

Пример #2 Альтернативный вариант функции scandir() для PHP 4

<?php
$dir = "/tmp";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}

sort($files);

print_r($files);

rsort($files);

print_r($files);

?>

Результатом выполнения данного примера будет что-то подобное:

Array
(
[0] => .
[1] => ..
[2] => bar.php
[3] => foo.txt
[4] => somedir
)
Array
(
[0] => somedir
[1] => foo.txt
[2] => bar.php
[3] => ..
[4] => .
)

Примечания

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers.

dir

Класс каталога (псевдо-объектно ориентированный механизм).

Синтаксис:

new dir(string directory);

Псевдо-объектно ориентированный механизм для получения списка файлов каталога. Открывает каталог из directory.
После этого становятся доступны два свойства объекта: дескриптор каталога handle и строка path, указывающая, какой каталог в настоящий момент используется. Эти свойства доступны, если только каталог был открыт.
Свойство handle может быть использован вместе с другими функциями работы с каталогом типа readdir(), rewinddir() и closedir().

Для класса доступны три метода: чтение, возврат к началу и закрытие (read, rewind и close соответственно).

Пример:

$d = dir("/etc");
echo "Handle: ".$d->handle."<br>n";
echo "Path: ".$d->path."<br>n";
while($entry=$d->read()) { // Последовательно выводить
echo $entry."<br>n"; // имя каждого файла,
} // имеющегося в каталоге$d->close();

closedir

Закрыть дескриптор(handle) каталога.
Синтаксис:

void closedir(int dir_handle);

Закрывает поток каталога, обозначенный как dir_handle. Поток предварительно должен быть открыт функцией opendir().

opendir

Открыть дескриптор каталога.
Синтаксис:

int opendir(string path);

Возвращает дескриптор открытого каталога path, который в последующем используется в функциях closedir(), readdir(), и rewinddir().

readdir

Получение имени следующего файла в списке каталога.
Синтаксис:

string readdir(int dir_handle);

Возвращает имя следующего файла из каталога. Имена файлов возвращаются в виде неупорядоченной последовательности.
Пример:

<?phpp
$handle=opendir(".");
echo "Directory handle: $handlen";
echo "Files:n";
while ($file = readdir($handle)) {
echo "$filen";
}
closedir($handle);
?>

Следует отметить, что функция также возвращает значения "." и "..".

Если эти значения не требуются, то их можно исключить следующим образом:

<?phpp
$handle=opendir(".");
while($file=readdir($handle)) {
if($file != "." && $file != "..") {
echo "Имя файла: $file<br>";
};
};
closedir($handle);
?>

rewinddir

Реинициализация дескриптора каталога.
Синтаксис:

void rewinddir(int dir_handle);

После вызова этой функции функция readdir() с аргументом dir_handle будет возвращать имена файлов с начала в списке каталога.

chgrp()

Изменяет группу владельцев файла (PHP3, PHP4, PHP5)

Описание:

bool chgrp (string filename, mixed group)

Функция осуществляет попытку смены группы владельцев файла с именем filename на группу, указанную в параметре group (в качестве имени или числа). Только суперпользователь способен произвольно изменять группу файла, обычный пользователь может изменять группу файла на любую из групп, к которой принадлежит данный пользователь.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

Замечание: Когда опция safe mode включена, PHP проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.

chmod()

Изменяет режим доступа к файлу или каталогу (PHP 3, PHP 4, PHP 5)

Описание:

bool chmod ( string filename, int mode )

Осуществляет попытку изменения режима доступа файла или каталога, переданного в параметре filename на режим, переданный в параметре mode.

Обратите внимание, что значение параметра mode не переводится автоматически в восьмеричную систему счисления, поэтому строки (такие, как, например, "g+w") не будут работать должным образом. Чтобы удостовериться в том, что режим был установлен верно, предваряйте значение, передаваемое в параметре mode, нулем (0):

<?php
chmod("/somedir/somefile", 755); // десятичное, неверный способ
chmod("/somedir/somefile", "u+rwx,go+rx"); // строка, неверный способ
chmod("/somedir/somefile", 0755); // восьмеричное, верный способ
?>

Значение параметра mode состоит из трех восьмеричных чисел, определяющих уровень доступа для владельца файла, для группы, в которую входит владелец, и для других пользователей, соответственно. Число, определяющее уровень пользователя, может быть вычислено путем суммирования значений, определяющих права: 1 - доступ на выполнение, 2 - доступ на запись, 4 - доступ на чтение. Более подробно о системе прав в системах Unix вы можете узнать с помощью команд 'man 1 chmod' and 'man 2 chmod'.

<?php
// Доступ на запись и чтение для владельца, нет доступа для других
chmod("/somedir/somefile", 0600);

// Доступ на запись и чтение для владельца, доступ на чтение для других
chmod("/somedir/somefile", 0644);

// Полный доступ для владельца, доступ на чтение и выполнение для других
chmod("/somedir/somefile", 0755);

// Полный доступ для владельца, доступ на чтение и выполнение для группы владельца
chmod("/somedir/somefile", 0750);
?>

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Замечание: Текущим пользователем является пользователь, от имени которого выполняется PHP. Возможно, что этот пользователь будет отличаться от пользователя, под именем которого вы получаете доступ к командной оболочке или учетной записи FTP.

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

Замечание: Когда безопасный режим включён, PHP проверяет имеет ли файл или директория, с которой вы работаете, такой же UID, как и выполняемый скрипт. Кроме того, вы не можете устанавливать SUID, SGID и "липкие" биты.

chown()

Изменяет владельца файла (PHP 3, PHP 4, PHP 5)

Описание:

bool chown ( string filename, mixed user )

Осуществляет попытку изменения владельца файла с именем filename на владельца, чье имя передано в параметре user (в виде числа или строки). Только суперпользователь может изменять владельца файла.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

Замечание: Когда опция safe mode включена, PHP проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.

lchgrp()

Изменяет группу владельцев символической ссылки

Описание:

bool lchgrp(string filename, mixed group)

Пытается изменить группу символической ссылки filename на group (указанную именем или числом).

Произвольно изменить группу символической ссылки может только суперпользователь; другие пользователи могут изменять группу только на группу, членом которой является этот пользователь.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

Замечание: Когда опция safe mode включена, PHP проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.

lchown()

Изменяет владельца символической ссылки

Описание:

bool lchown ( string filename, mixed user )

Пытается изменить владельца символической ссылки filename на пользователя user (указанного именем или цифрой). Изменить собственника символической ссылки может только суперпользователь.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

Замечание: Когда опция safe mode включена, PHP проверяет, имеют ли файлы/каталоги, с которыми вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.

umask()

Изменяет текущую umask (PHP 3, PHP 4, PHP 5)

Описание:

int umask ( [int mask] )

Устанавливает umask() PHP в значение mask & 0777 и возвращает старую umask. Если PHP используется как модуль сервера, umask восстанавливается после завершения каждого запроса.

Вызов umask() без аргументов вернёт текущую umask.

Общие сведения

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

Зарегистрировать новое имя у файла (то есть создать для него жесткую ссылку) можно с помощью функции link().

Ее синтаксис полностью идеентичен функции symlink(), да и работает она по тем же правилам, за исключением того, что создает не символическую, а жесткую ссылку.

link()

Создаёт жёсткую ссылку (PHP 3, PHP 4, PHP 5)

Описание:

bool link(string target, string link)

link() создаёт жесткую ссылку. Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

Замечание: Для Windows-платформ эта функция не реализована.

linkinfo()

Получает информацию о ссылке (PHP 3, PHP 4, PHP 5)

Описание:

int linkinfo(string path)

linkinfo() возвращает поле st_dev структуры stat из Unix C, которую возвращает системный вызов lstat. Эта функция используется для определения, существует ли ссылка (на которую указывает path) на самом деле (используя тот же метод, что и макро S_ISLNK, определённый в stat.h). Возвращает 0 или FALSE в случае ошибки.

Пример использования функции linkinfo()

<?php
echo linkinfo('/vmlinuz'); // 835
?>

Замечание: Для Windows-платформ эта функция не реализована.

Общие сведения

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

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

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

lstat()

Получает информацию о файле или символической ссылке (PHP 3 >= 3.0.4, PHP 4, PHP 5)

Описание:

array lstat (string filename)

Собирает статистику на файл или символическую ссылку с именем filename. Эта функция идентична функции stat(), за исключением того, что если filename является символической ссылкой, возвращается статус символической ссылки, а не того файла, на который она указывает.

Обратитесь к странице руководства функции stat() для получения информации о структуре массива, который возвращает lstat().

Замечание: Результаты этой функции кэшируются. Более подробную информацию смотрите в разделе clearstatcache().

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми упаковщиками url.

readlink()

Возвращает файл, на который указывает символическая ссылка (PHP 3, PHP 4, PHP 5)

Описание:

string readlink (string path)

readlink() делает то же самое, что и функция C readlink - возвращает содержимое пути символической ссылки или FALSE в случае ошибки.

Пример использования функции readlink()

<?php

// output e.g. /boot/vmlinux-2.4.20-xfs
echo readlink('/vmlinuz');

?>

Замечание: Для Windows-платформ эта функция не реализована.

symlink()

Создаёт символическую ссылку (PHP 3, PHP 4, PHP 5)

Описание:

bool symlink (string target, string link)

symlink() создаёт символическую ссылку с именем link на существующий файл target.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Замечание: Для Windows-платформ эта функция не реализована.