1. Главная страница » Компьютеры » Php функции работы с файлами

Php функции работы с файлами

Автор: | 16.12.2019

На самом деле, чем открыть php файл, не является большой проблемой. Бывает труднее открыть бутылку пива, когда находишься посреди леса. Но так думают лишь заядлые программисты. А для новичков поведаем обо всех возможностях php для работы с файлами:

Файлы php

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

Для работы с файлами php используются специальные приложения – программные редакторы. Наиболее распространенными из них являются:

  • Dreamweaver.
  • PHPEdit.
  • Eclipse PHP Development.


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


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

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

Открытие и закрытие файлов

В php все операции с файлами осуществляются в несколько этапов:

  • Открытие файла;
  • Редактирование содержимого;
  • Закрытие файла.

Для открытия файла используется функция fopen() . Ее синтаксис:

  • string filename – имя файла или абсолютный путь к нему. Если путь к файлу не будет указан, то будет произведен его поиск в текущем каталоге. При отсутствии искомого файла система выведет сообщение об ошибке. Пример:

  • string mode – указывает режим открытия файла. Принимаемые аргументом значения:
  • r – файл открыт только для чтения, файловый указатель устанавливается в начале;
  • r+ – файл открыт для чтения и записи;
  • w – создается новый файл только для записи. Если файл с таким именем уже существует, в нем происходит автоматическое удаление всех данных;
  • w+ — создается новый файл для записи и чтения. При существовании такого файла происходит полная перезапись его данных на новые;
  • a – файл открыт для записи. Указатель устанавливается в конце. То есть запись в файл php начнется не с начала, а с конца;
  • a+ – открытие файла в режиме чтения и записи. Запись начнется с конца;
  • b – режим работы с файлом, содержащим в себе двоичные данные (в двоичной системе исчисления). Этот режим доступен только в операционной системе Windows.

Для закрытия доступа к файлу служит функция fclose () . Синтаксис:

int fclose (int file) , где int file – дескриптор сайта, который нужно закрыть.

Чтение и запись файлов

Для простого отображения всего содержимого файла идеально подходит функция readfile () . Ее синтаксис:

readfile (string filename) , где string filename – строковое имя фала ( не дескриптор ).


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

Для работы с функцией требуется открытие и закрытие файла. Пример:

Результат аналогичен предыдущему.

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

  • string fgets ( int file, int length) – функция считывает строку длиною length . Пример:

  • string fread (int file, int length) – по действию идентична предыдущей.

Для записи текстовых данных в файл существует две идентичные функции:

  • int fputs ( int file, string string [, int length ])
  • int fwrite ( int file, string string [, int length ])

Функции записывают в файл int file строку string string указанной длины int length ( необязательный аргумент ). Пример:

Создание и удаление файлов

Чтобы создать файл php , можно использовать функцию fopen() в режиме доступа « w » или « w+ ». Или функцию touch () . Она устанавливает время изменения файла. При отсутствии элемента с искомым именем он будет создан. Ее синтаксис:

Для создания копии файла используется функция copy() . В качестве аргументов она принимает имя оригинала и файла, куда нужно скопировать содержимое. Если он не существует, то будет создан. Синтаксис функции:


Удалить файл можно с помощью функции unlink() . Ее синтаксис:

Получение информации о файле

Для получения информации о файлах в php используется целый ряд функций:

  • bool fileexists (string filename) – проверяет, существует ли элемент;
  • int fileatime (string filename) – возвращает время последнего открытия;
  • int filesize (string filename) – возвращает байтовый размер файла;
  • string filetype (string filename) – тип файла.
Читайте также:  3Dmark fire strike что это


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

Работа с файлами — важный инструмент PHP.

Включение внешних файлов

В каждый PHP-документ можно включить файл с помощью инструкции include(). Её аргумент: путь к файлу. Этой инструкцией удобно пользоваться при наличии одинаковых кусков кода во многих PHP-программах. Содержимое включаемого файла обрабатывается как простой HTML-текст. Для того, чтобы содержимое этого файла обрабатывалось как PHP-программа, нужно обрамлять его открывающим и закрывающим тегами PHP.

Пример 1

Включаемый файл top.php с PHP-программой:

. Основная часть.

В данном случае результат будет тем же, если включаемый файл top.php содержит только строку HTML-текста:

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

Пример 2

Включаемый файл top.php с PHP-программой:

Включаемый файл вернул 56

Инструкцию include() можно использовать внутри цикла. В цикле include() выполняется при каждой итерации. Это можно использовать для включения нескольких файлов. Например:

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

Оператор include() также можно включать в тело условного оператора.

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

Для указания что файл нужно подключать только один раз используется оператор include_once()

Анализ файлов

PHP содержит множество функций, дающих информацию о файлах. Наиболее употребимыми являются:

  • file_exists() — определяет существование файла. Например:
  • is_file() — определяет, является ли исследуемый объект файлом. Например:
  • is_dir() — определяет, является ли исследуемый объект каталогом. Например:
  • is_readable() — определяет, доступен ли файл для чтения. Например:
  • is_writable() — определяет, доступен ли файл для записи. Например:
  • filesize() — определяет размер файла в байтах.
  • filemtime() — определяет дату и время последнего изменения файла.
  • fileatime() — определяет дату и время последнего обращения к файлу.

Время возвращается в формате Unix, т.е. представляет собой количество секунд, прошедших после 1 января 1970 г. В примере 2 это число преобразуется в понятный для человека формат с помощью функции date( ). Подробнее об этой функции можно узнать в разделе "Дополнительные возможности".

Пример 3

Внимание! С удаленными файлами эти функции не работают. Их можно применять только к локальной файловой системе.

Управление файлами

PHP содержит множество функций управления файлами. Наиболее употребимыми являются:

  • touch() — создает пустой файл с заданным именем. Если такой файл уже существует, то функция изменит дату модификации. Например:
  • copy() — копирует файл. Для копирования файлов в php применяется функция copy ($source, $result). Ей нужно передать лишь два параметра — источник $source и имя файла-копии — $result. Стоит отметить, что следует указывать полные адреса к файлам. Пример применения функции copy:
  • unlink() — удаляет заданный файл. Например:
  • fopen( ) — открывает локальный или удаленный файл и возвращает указатель на него. Указатель используется во всех операциях с содержимым файла. Аргументы: имя файла и режим открытия.
  • r чтение. Указатель файла устанавливается на его начало
    r+ чтение и запись. Указатель файла устанавливается на его начало
    w запись. Указатель файла устанавливается на его начало. Все старое содержимое файла теряется. Если файл с указанным именем не существует, функция пытается его создать
    w+ чтение и запись. Указатель файла устанавливается на его начало. Все старое содержимое файла теряется. Если файл с указанным именем не существует, функция пытается его создать
    a запись. Указатель файла устанавливается на его конец. Если файл с указанным именем не существует, функция пытается его создать
    a+ чтение и запись. Указатель файла устанавливается на его конец. Если файл с указанным именем не существует, функция пытается его создать

    Если открыть файл не удалось, то можно прервать выполнение программы. Например:

  • fclose() — закрывает файл. Аргумент: указатель файла, полученный ранее от функции fopen(). Например:
  • feof() — проверка конца файла. Аргумент: указатель файла.
  • fgetc() — чтение очередного символа из файла. Аргумент: указатель файла.
  • fgets() — чтение очередной строки файла. Аргументы: указатель файла и длина считываемой строки. Операция прекращается либо после считывания указанного количества символов, либо после обнаружения конца строки или файла.
  • Пример 4

    Пример 5

    Пример 6

    1 Можно читать, нельзя писать
    2 Нельзя ни читать, ни писать
    3 Снятие блокировки

    Пример 7

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

    В PHP версии >= 4.3.0 появились новые удобные функции работы с файлами:

    • file_get_contents() — прочитать весь файл или URL
    • file_put_contents() — записать файл

    Работа с каталогами

    В PHP есть несколько функций для работы с каталогами:

      mkdir() — создание каталога. Аргументы: путевое имя каталога и режим доступа. Режим доступа — восьмеричное число из трех цифр с ведущим нулем. Первая цифра — право доступа для владельца, вторая — для группы, третья — для всех остальных. В системе Windows режим доступа игнорируется. В системе UNIX определены следующие права доступа:

    Нет доступа
    1 Доступ для запуска
    2 Доступ для записи
    3 Доступ для записи и запуска
    4 Доступ для чтения
    5 Доступ для чтения и запуска
    6 Доступ для чтения и записи
    7 Полный доступ
    Читайте также:  Hp insight management wbem providers

    Например, право полного доступа для владельца, чтения и запуска для группы и запуска для всех остальных:

  • rmdir() — удаление каталога. Аргумент: путевое имя каталога. Удалить можно лишь пустой каталог при наличии права на это. При успешном выполнении функция возвращает true.
  • opendir() — открытие каталога. Аргумент: путевое имя каталога. В случае возникновения ошибки функция возвращает false. Ошибка при открытии может быть вызвана тем, что каталог не существует или программа не имеет права его читать.
  • readdir() — чтение каталога. Аргумент: путевое имя каталога. Возвращает строку, содержащую имя найденного файла или подкаталога. По достижении конца каталога функция возвращает false.
  • Пример 8

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

    Помимо использования функция fgetc() fgets() fgetss(), Вы можете использовать
    $file = file($filename). Она читает $filename в массив($file).

    Передача файла с сервера. Скачать файл. DownLoad.

    Ручной Download, или как скриптом открыть пользователю окошко сохранения файла. Чтобы в браузере открылся диалог "Сохранить файл" с названием файла file.dat, скрипт должен послать такие заголовки:

    Готовый пример отправки файла с диска: Не мешало бы также ссылаться на скрипт как http://. /download.php?file.dat, иначе браузеры, основанные на Mozilla, могут попытаться записать файл как file.dat.php. или указать атрибут download: Примечание: Не используйте заголовок header("Cache-Control: no-cache") в таких скриптах, большинство версий Internet Explorer не смогут скачать файл.

    Следующий пример скрипта демонстрирует как организовать поддержку докачки:

    Предполагается, что $cd — путь к файлу, $fn — имя файла Как передать файл на сервер?

    Функции для работы с каталогами

    • chdir() — Сменить каталог boolean chdir (string str)

    Изменяет текущий каталог PHP на указанный в качестве параметра str. Возвращает TRUE в случае успешного завершения, FALSE в случае возникновения ошибки
    chroot() — Сменить корневой каталог boolean chroot (string str)

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

    Замечание: Для Windows-платформ эта функция не реализована.
    closedir() — Освободить дескриптор каталога void closedir (resourse catalog)

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

    dir — Класс directory

    Псевдо-объектно-ориентированный механизм для чтения каталога, переданного в параметре каталог. С момента открытия каталога становятся доступными два свойства класса. Свойство "handle" может быть использовано с другими функциями для работы с каталогами, например, с функциями readdir(), rewinddir() и closedir(). Свойство "path" содержит путь к открытому каталогу. Доступны три метода: read, rewind and close.

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

    Замечание: Порядок, в котором метод "read" возвращает элементы каталога, зависит от операционной системы.

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

    getcwd() — Получить имя текущего рабочего каталога string getcwd (void)

    Возвращает имя текущего рабочего каталога.

    opendir() — Открыть каталог resourse opendir (string path)

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

    Если путь не существует или каталог, расположенный по указанному пути, не может быть открыт вследствие правовых ограничений или ошибок файловой системы, функция opendir() возвращает значение FALSE и генерирует сообщение PHP об ошибке уровня E_WARNING. Вы можете запретить вывод сообщения об ошибке, предварив имя функции opendir() символом ‘@’.

    Начиная с версии PHP 4.3.0, параметр путь может также являться любым URL’ом, обращение к которому приводит к получению списка его файлов и каталогов. Однако, данный способ работает только при использовании url-упаковщика file://. В версии PHP 5.0.0 была добавлена поддержка url-упаковщика ftp://.

    readdir — Получить элемент каталога по его дескриптору string readdir (resource catalog)

    Возвращает имя следующего по порядку элемента каталога. Имена элементов возвращаются в порядке, зависящем от файловой системы.

    Обратите внимание на способ проверки значения, возвращаемого функцией readdir() в приведенном ниже примере. В этом примере осуществляется проверка значения на идентичность (выражения идентичны, когда они равны и являются значениями одного типа — за более подробной информацией обратитесь к главе Операторы сравнения) значению FALSE, поскольку в ином случае, любой элемент каталога, чье имя может быть выражено как FALSE, остановит цикл (например, элемент с именем "0").

    Обратите внимание, что функция readdir() также возвращает элементы с именами, и, если вы не хотите получать эти значения, просто отбрасывайте их:

    rewinddir() — Сбросить дескриптор каталога void rewinddir (resource catalog)

    Читайте также:  Hp pavilion gaming 17 ab313ur

    Сбрасывает поток каталога, переданный в параметре catalog таким образом, чтобы тот указывал на начало каталога

    scandir() — Получить список файлов и каталогов, расположенных по указанному пути array scandir (string catalog [, int order])

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

    По умолчанию, сортировка производится в алфавитном порядке по возрастанию. Если указан необязательный параметр order (равен 1), сортировка производится в алфавитном порядке по убыванию. Пример кода

    Автор: Мухаметшин Д.Ф

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

    Работа с файлами разделяется на 3 этапа:

    1. Открытие файла.
    2. Манипуляции с данными.
    3. Закрытие файла.

    I. Открытие файла

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

    $fp = fopen(‘counter.txt’, ‘r’);

    Согласно документации PHP выделяют следующие виды режимов файлов:

    1. r – открытие файла только для чтения.
    2. r+ — открытие файла одновременно на чтение и запись.
    3. w – создание нового пустого файла. Если на момент вызова уже существует такой файл, то он уничтожается.
    4. w+ — аналогичен r+, только если на момент вызова фай такой существует, его содержимое удаляется.
    5. a – открывает существующий файл в режиме записи, при этом указатель сдвигается на последний байт файла (на конец файла).
    6. a+ — открывает файл в режиме чтения и записи при этом указатель сдвигается на последний байт файла (на конец файла). Содержимое файла не удаляется.

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

    Для демонстрации рассмотрим следующий сценарий:

    II. Манипуляции с данными файла

    Записывать данные в файл при помощи PHP можно при помощи функции fwrite(). Это функция принимает 2 обязательных параметра и 1 необязательный. В качестве обязательных параметров выступает дескриптор файла и режим файла:

    Для построчного считывания файла используют функцию fgets(). Функция принимает 2 обязательных параметра:

    Примечание: В данном примере значение 999 определяет количество символов, которые будут считываться до тех пор, пока указатель не достигнет конца файла (EOF).

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

    Также можно использовать функцию fpassthru() которая принимает 1 обязательный параметр. Перед использованием этой функции необходимо открыть файл в режиме чтения. По окончанию считывания файла функция автоматически закрывает файл(при этом дескриптор файла становиться недействительным).

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

    Примечание: Не следует применять функцию file() к двоичным файлам (binary-safe), т.к. она не является безопасной в плане считывания двоичных файлов, если при этом, где-то встретиться символ конца файла (EOF), то она не гарантирует вам чтение всего двоичного файла.

    Примечание: Работа с массивами подробно описывается здесь, авторы: Мухаметшин Д.Ф., Симдянов И.В.

    В конце статьи, вы найдете хороший «сборник рецептов» по массивам, который дает решение многих проблем, с которыми ежедневно встречается веб-программист.

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

    III. Закрытие файла

    Закрытие файла происходить с помощью функции fclose(), которая принимает 1 обязательный параметр.

    Сборник рецептов

    1) Нам необходимо проверить существует ли тот или иной файл. Для этого мы воспользуемся функцией file_exists().

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

    2) Определяем размер файла с помощью функции filesize()

    3) Создание временного файла с помощью функции tmpfile()

    4) Вам необходимо определить количество строк в файле. Для этого используем функцию count()

    5) Нам необходимо использовать механизм блокировки файла

    6) Нам необходимо удалить определенную строку из файла

    7) Определение типа файла. Используем функцию filetype(), которая принимает единственный параметр

    После вызова строка может содержат одно из следующих значений:

    1. file – обычный файл
    2. dir – каталог
    3. ink – символическая ссылка
    4. fifo – fifo-канал
    5. block – блочно — ориентированное устройство
    6. char – символьно — ориентированное устройство
    7. unknown – неизвестный тип файла

    8) Если вы хотите просмотреть все параметры файла, то следует воспользоваться функцией stat()

    9) Нам необходимо очистить файл, используем функцию ftruncate()

    10) Нам необходимо узнать дату последнего изменения файла, используем функцию filectime(). Функция возвращает значение времени в форме Unix timestamp.

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    *

    code