Как создать файл на сервере
Перейти к содержимому

Как создать файл на сервере

  • автор:

PHP | Создание / запись файлов

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

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

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

Если вы используете функцию fopen() для открытия файла, который не существует, то она создаст его, учитывая, что файл открыт для записи (w) или добавления (a).

В приведенном ниже примере создается новый файл с именем «test_file.txt». Файл будет создан в той же директории, из которой вызвано исполнение сценария PHP:

Запись в файл — fwrite()

Функция fwrite() используется для записи в файл.

Первый параметр функции fwrite() содержит имя файла для записи, а второй параметр — строку, которая будет записана в файл.

Работа с FTP в PHP

Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.

Как правило, при работе с FTP выполняются следующие действия:

  • Соединение с удаленным FTP-сервером (функция ftp_connect ).
  • Авторизация ( ftp_login ).
  • Действия с файлами.
  • Закрытие соединения ( ftp_close ).

Список директорий и файлов

Функция ftp_nlist ($ftp_stream, $directory) получает список имен файлов и директорий в виде массива, где $ftp_stream – идентификатор соединения с FTP-сервером, $directory – путь к директории (в примере переменная пуста – это соответствует домашней директории FTP-пользователя).

Результат:

Получить список с расширенной информацией поможет функция ftp_rawlist() .

Результат:

Для получения детальных данных о файлах в виде массива есть функция ftp_mlsd(), но она появилась в PHP 7 и не всегда работает, для более ранних версий PHP:

Результат:

Поверка наличия файла/директории

Специальных функций для проверки существования файлов и директорий нет, поэтому можно использовать следующие варианты:

Проверить наличие файла на FTP-сервере

Функция ftp_size() возвращает «-1» если файл не найден.

Поверить наличие директории

Функция ftp_chdir() изменяет текущую директорию на FTP-сервере, возвращает false в случае возникновения ошибки.

Размер файла/директории

Получить размер файла

Функция ftp_size() возвращает размер файла в байтах.

Получить размер FTP директории

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

Как создать файл (PHP)

Создать файл в PHP можно двумя способами. Функцией fopen() и функцией file_put_contents() . Функция file_put_contents() лучше использовать только в случае обычной записи/дозаписи текста в файл, в остальных случаях лучше использовать fopen() .

fopen()

Например нужно создать файл data.txt и записать в него текстовую информацию.

В результате в файле data.txt будет следующая информация:

file_put_contents()

Функция int file_put_contents (string filename, mixed data [, int flags [, resource context]]) повторяет вызов функций fopen(), fwrite(), fclose().

Например нужно создать файл data2.txt и записать в него текстовую информацию.

В результате в файле data2.txt будет:

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

В результате в файле будет следующая информация:

Примечание

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

Работа с файлами в PHP

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

Открытие файла с помощью функции PHP fopen()

Для работы с файлом сначала нужно его открыть функцией fopen() . Ее синтаксис:

Первый параметр, передаваемый в fopen() , это имя файла, который нужно открыть, а второй — режим открытия. Например:

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

Режим Что он делает
R Открывает файл только для чтения.
r+ Открывает файл для чтения и записи.
W Открывает файл только для записи и очищает содержимое файла. Если файл не существует, PHP попытается его создать.
w+ Открывает файл для чтения и записи и очищает содержимое файла. Если файл не существует, PHP попытается его создать.
A Открывает файл только для записи. Сохраняет содержимое файла, записывая его в конец файла. Если файл не существует, PHP попытается его создать.
a+ Открывает файл для чтения и записи. Сохраняет содержимое файла, записывая его в конец файла. Если файл не существует, он будет создан. Можно использовать вместо PHP fread ()
X Открывает файл только для записи. Возвращает значение FALSE и генерирует ошибку, если файл уже существует. Если файл не существует, PHP попытается его создать.
x+ Открывает файл для чтения и записи; в противном случае имеет такое же поведение, как «x».

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

Совет . Операции с файлами и папками часто сопряжены с ошибками. Поэтому рекомендуется применить форму проверки ошибок, чтобы при их возникновении скрипт обработал ошибку.

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

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

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

Чтение из файлов с помощью функции PHP fread()

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

Чтение фиксированного количества символов

Функция PHP fread() может использоваться для чтения заданного количества символов из файла. Базовый синтаксис функции:

Она принимает два параметра — дескриптор файла и количество байтов, которые должны быть считаны. В следующем примере мы считываем 20 байтов из файла data.txt , включая пробелы. Предположим, data.txt содержит абзац текста » The quick brown fox jumps over the lazy dog «:

Приведенный выше пример даст следующий результат:

Чтение всего содержимого файла

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

Приведенный выше пример даст следующий результат:

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

Приведенный выше пример даст следующий результат:

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

Еще один способ считывания всех данных из файла — это функция file() . Она работает аналогично функции file_get_contents() , но возвращает содержимое как массив строк, а не одну строку. Каждый элемент возвращаемого массива соответствует строке в файле.

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

Запись файлов с использованием функции PHP fwrite()

Можно записать данные в файл с помощью функции PHP fwrite() . Ее синтаксис:

Функция fwrite() принимает два параметра: дескриптор файла и строку данных, которые должны быть записаны:

В приведенном выше примере, если файл note.txt не существует, PHP автоматически создаст его и запишет данные. Но если note.txt уже существует, PHP перед записью новых данных стирает содержимое этого файла. Если вы просто хотите добавить файл и сохранить существующее содержимое, используйте режим a вместо w .

Альтернативный способ – file_put_contents() . Это аналог функции file_get_contents() , который предоставляет простой способ записи данных в файл без необходимости его открытия. Эта функция принимает имя и путь к файлу с данными, которые должны быть записаны. Например ( похожий на PHP fread пример ):

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

Переименование файлов с помощью функции PHP rename()

После прочтения с помощью php fread() файл можно переименовать файл или каталог, используя функцию PHP rename() , например:

Удаление файлов с помощью функции PHP unlink()

Можно удалять файлы или папки с помощью функции PHP unlink() , например:

Функции файловой системы PHP

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

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

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