Перед чтением или записью в файл его необходимо открыть. Чтобы открыть файл используется функцию fopen():
fopen ( string $filename , string $mode , bool $use_include_path = false , resource $context = ? ) : resource
Функция fopen() имеет следующие параметры:
Функция fopen() возвращает ресурс указателя файла, если он успешно открывает файл, или false, если не удается открыть файл.
В следующей таблице показан типы доступа к файлу (параметр $mode):
Режим | Чтение | Запись | Указатель файла | Если файл не существует, создать? | IЕсли файл существует |
---|---|---|---|---|---|
‘r’ | Да | Нет | В начале файла | Нет | |
‘r+’ | Да | Да | В начале файла | Нет | |
‘w’ | Нет | Да | В начале файла | Нет | |
‘w+’ | Да | Да | В начале файла | Да | |
‘a’ | Нет | Да | В конце файла | Да | |
‘a+’ | Да | Да | В конце файла | Да | |
‘x’ | Нет | Да | В начале файла | Да | Return false |
‘x+’ | Да | Да | В начале файла | Да | Return false |
‘c’ | Нет | Да | В начале файла | Да | |
‘c+’ | Да | Да | В начале файла | Да |
При работе с бинарным файлом вам необходимо добавить символ b к аргументу $ mode. Например, режим 'rb' открывает двоичный файл для чтения.
Перед открытием файла рекомендуется проверить, существует ли файл (функция file_exists).
<?php
$filename = 'readme.txt';
try {
if (!file_exists($filename )) {
throw new Exception('File ' . $filename . 'does not exist.');
}
$fh = fopen($filename , 'r');
// process the file
echo 'The file ' . $filename . ' is open';
} catch (\Throwable $e) {
echo $e->getMessage();
} finally {
if ($fh) {
fclose($fh);
}
}