Php получить информацию о файле. Как Создать Файл Phpinfo и Проверить Информацию о PHP. Открытие файлового манипулятора процесса

16.5K

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

Файлы php

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

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

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

include имя_файла

Пример подключения:

Подключаемый файл:


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

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

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

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

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

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

int fopen(string filename, string mode [, int use_include_path])

Принимаемые аргументы:

  • 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 () . Она считывает данные от конечной позиции указателя и до конца файла. Ее синтаксис:

int fpassthru (int file)

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

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

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

PHP

file_exists("test.txt")//Существует ли файл? filesize("test.txt");//Узнаем размер файла //Возвращается временная метка: fileatime("test.txt");//Дата последнего обращения к файлу //date("d M Y", $atime); filemtime("test.txt");//Дата изменения файла //date("d M Y", $mtime); filectime("test.txt");//Дата создания файла(Windows) //date("d M Y", $ctime);

Файлы: режимы работы

PHP

resource fopen (string filename, string mode) // resource - возвращает указатель на файл в случае успешной работы, или FALSE в случае ошибки
Режим работы Описание
r открыть файл только для чтения;
r+ открыть файл для чтения и записи;
w открыть файл только для записи. Если он существует, то текущее содержимое файла уничтожается. Текущая позиция устанавливается в начало;
w+ открыть файл для чтения и для записи. Если он существует, то текущее содержимое файла уничтожается. Текущая позиция устанавливается в начало;
а открыть файл для записи. Текущая позиция устанавливается в конец файла;
а+ открыть файл для чтения и записи. Текущая позиция устанавливается в конец файла;
b обрабатывать бинарный файл. Этот флаг необходим при работе с бинарными файлами в ОС Windows.

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

PHP

$fi = fopen("test.html", "w+") or die("Ошибка"); //Примеры $fi = fopen("http://www.you/test.html","r"); $fi = fopen("http://ftp.you/test.html", "r"); //Закрываем fclose($fi)

Чтение файлов в PHP

PHP

//Читаем файл fread(int fi, int length) $str = fread($fi, 5); // Читаем первые 5 символов echo $str; // так как курсор передвинулся $str = fread($fi, 12); // Читаем следующие 12 символов echo $str; fgets(int fi[, int length]) // Прочитать строку из файла fgetss(int fi, int length [, string allowable]) // Прочитать строку из файла и отбросить HTML-теги // string allowable - теги, которые необходимо оставить fgetc(int fi) //Считывает символ из файла

Изначально Запись будет происходить в начало файла, путем перезаписывания существующих данных, если они есть. Поэтому, если вам нужно записать что-то в конец файла, нужно установить соответствующий режим чтения , например, a+ .

Манипуляции с курсором в файлах PHP

PHP

int fseek(int fi, int offset [, int whence]) //Установка курсора // int fi - указатель на файл //offset - количество символов, на которые нужно передвинуться. //whence: //SEEK_SET - движение начинается с начала файла; //SEEK_CUR - движение идет от текущей позиции; //SEEK_END - движение идет от конца файла. fseek($fi, -10, SEEK_END); //Читаем последние 10 знаков $s = fread($fi, 10); $pos = ftell($fi); //Узнаем текущую позицию rewind($f)//сброс курсора bool feof($f) //конец файла

Прямая работа с файлами (данными) в PHP

PHP

array file(string filename) // Получаем содержимое файла в виде массива //Еще один вариант прямой работы с данными file_get_contents(string filename) //Чтение (получаем весь файл одной строкой) //Запись в файл (изначально перезаписывается) file_put_contents(string filename, mixed data[,int flag]); //FILE_APPEND // Запись в конец файла: file_put_contents("test.txt", "данные", FILE_APPEND); //Если записать массив, $array = array("I", "live"); file_put_contents("test.txt",$array); //то получим "Ilive"

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

PHP

copy(string source, string destination); // Копирование файла rename(str oldname, str newname); // Переименование файла unlink(string filename); // Удаление файла

Загрузка файлов на сервер PHP

//Настрoйки PHP.ini file_uploads (on|off) // разрешаем.запрещаем загрузку файлов upload_tmp_dir // временная папка для загружаемых файлов. по умолчания временная папка upload_max_filesize (default = 2 Mb) // макс. размер загружаемого файла post_max_size // общий размер посылаемый формы (должен быть больше upload_max_filesize) //Простая загрузка

HTML

Работаем с файлами на сервере

PHP

//Принимаем данные $tmp = $_FILES["userfile"]["tmp_name"]; $name = $_FILES["userfile"]["name"]; //Перемещаем файл move_uploaded_file($tmp, name); move_uploaded_file($tmp, "upload/".name); // перенаправляем файл в папку upload // относительно текущего файла //Что в массиве $_FILES $_FILES["userfile"]["name"] // имя файла, например, test.html $_FILES["userfile"]["tmp_name"] // временное имя файла (путь) $_FILES["userfile"]["size"] // размер файла $_FILES["userfile"]["type"] // тип файла $_FILES["userfile"]["error"] // 0 - ошибок нет, число - есть array stat (string filename)

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

В случае ошибки, stat() вернёт FALSE . Также она выдаст предупреждение.

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

Числовой Ассоциативный (начиная с PHP 4.0.6) Описание
0 dev номер устройства
1 ino номер inode
2 mode режим защиты inode
3 nlink количество ссылок
4 uid userid владельца
5 gid groupid владельца
6 rdev тип устройства, если устройство inode *
7 size размер в байтах
8 atime время последнего доступа (Unix timestamp)
9 mtime время последней модификации (Unix timestamp)
10 ctime время последнего изменения inode (Unix timestamp)
11 blksize размер блока ввода-вывода файловой системы *
12 blocks количество используемых блоков

* - доступен только на системах, поддерживающих тип st_blksize -- другие системы (например Windows) вернут -1.

Любое программное обеспечение, которое вы хотите запустить на вашем веб сервере имеет определенные требования, которым он должен соответствовать. К примеру, для WordPress требуется PHP версии 5.2.4 и выше. В зависимости от сервера вы можете изменять некоторые настройки PHP, другие наоборот изменять запрещено, однако, о них всех можно получить информацию в файле phpinfo. В этом руководстве вы узнаете, как создать файл phpinfo и узнать значения и статус PHP модулей. Это также может быть полезно для получения информации о вашем хостинг аккаунте, такой как max_execution_time, memory_limit, post_max_size и другой.

Перед тем, как вы начнете это руководство, вам понадобится следующее:

  • Доступ к контрольной панели вашего хостинга или FTP аккаунту

Вариант 1 - Проверка информации о PHP через панель управления хостинга

В Hostinger, информация о PHP вашего аккаунта может быть найдена в разделе Дополнительно → Информация о PHP . Это является очень удобной функцией, так как вам не надо будет создавать дополнительных файлов на вашем хостинге.

После этого, вы переместитесь на страницу со всей необходимой информацией о вашей версии PHP, модулях и значениях. Для поиска конкретного модуля или функции воспользуйтесь поиском, нажав сочетание клавиш CTRL+F .

Поздравляем! Вы узнали, как получить доступ к информации о вашем php через панель управления Hostinger.

Вариант 2 - Проверка информации о PHP с помощью создания файла phpinfo.php

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

Шаг 2.1 - Создание файла phpinfo

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

Войдите в панель управления вашего хостинга и откройте Файловый менеджер . Нажмите кнопку Новый файл для создания нового файла.

В первом поле укажите путь где будет создан новый файл. Далее, в поле Новое имя файла введите phpinfo.php . В большинстве случаев вы можете оставить путь без изменений /public_html . В этом случае файл будет создан в корневом каталоге вашего сайта.

Шаг 2.2 - Редактирование файла

На этом этапе у вас уже имеется пустой файл phpinfo.php в каталоге public_html . Скопируйте следующий код в файл и нажмите иконку Сохранить в левом углу экрана.

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

  1. Используйте любой текстовый редактор и создайте файл phpinfo.php на вашем компьютере.
  2. Добавьте следующий код в файл:
  1. Загрузите файл используя FTP в ваш каталог public_html .

Шаг 2.3 - Проверка информации о PHP через браузер

Если все было сделано правильно, то теперь вы можете получить доступ к созданному файлу, добавив в конец вашего доменного имени /p hpinfo.php . К примеру, http://вашдомен.ru/phpinfo.php

Вы должны увидеть похожий результат при открытии этой страницы через браузер:

На этой странице вы сможете увидеть все настройки вашего PHP.

Заключение

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

Задача
Необходимо прочитать метаданные файла, например права доступа и имя владельца.

Решение
Вызовите функцию stat(), которая возвращает массив информации о файле:

$info = stat("harpo.php");

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

Элемент mode возвращенного массива содержит права доступа в виде целого числа по основанию 10. Это сбивает с толку, поскольку права доступа обычно выражаются либо символически (т. е. вывод команды ls -rw-r--r--), либо в виде восьмеричного числа (т. е. 0644). Конвертировать права доступа в более понятный формат позволяет функция base_convert(), преобразующая права доступа в восьмеричное число:

$file_info = stat("/tmp/session.txt");
$permissions = base_convert($file_info["mode"],10,8);

В результате получим восьмеричное число из шести цифр. Например, если команда ls показывает о /tmp/session.txt следующее:

То значение элемента $file_info["mode"] равно 33204, а значение переменной $permissions равно 100664.

Последние три цифры (664) определяют права доступа к файлу: пользователя (чтение и запись), группы (чтение и запись) и всех остальных (чтение). Третья цифра, 0, означает, что для файла не установлен ни бит смены идентификатора пользователя (setuid), ни бит смены идентификатора группы (setgid). Крайнее слева число 10 означает, что это обычный файл (а не сокет, символическая ссылка или другой специальный файл).

Поскольку функция stat() возвращает массив как с числовым, так и со строковым индексами, то в результате выполнения цикла foreach по этому массиву мы получаем две копии каждого значения. И поэтому надо обратиться к циклу for от элемента 0 до элемента 12 возвращенного массива.

Функция fstat() аналогична рассмотренной stat() и принимает дескриптор файла (возвращенный функцией fopen() или popen()) в качестве аргумента. Функцию fstat() можно применять только для локальных файлов и нельзя – к URL, передаваемым функции fopen().
PHP-функция stat() осуществляет дорогостоящий базовый системный вызов stat(2).

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

File_exists(), fileatime(), filectime(), filegroup(), fileinode(), filemtime(), fileowner(),
fileperms(), filesize(), filetype(), fstat(), is_dir(), is_executable(), is_file(), is_link(), is_readable(), is_writable() и lstat().