Получение текущих дисков в системе на PHP.


Содержание

PHP и взаимодействие с файловой системой Web-сервера

Введение

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

Также мы рассмотрим создание HTML-формы для интерфейса, реализующего функционал загрузки файлов на сервер.

Код HTML-формы

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

Для посылки данных используется метод POST. Дескриптор

Работа с mdadm в Linux для организации RA > Опубликовано: 08.03.2020

mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования.

Установка mdadm

Утилита mdadm может быть установлена одной командой.

Если используем CentOS / Red Hat:

yum install mdadm

Если используем Ubuntu / Debian:

apt-get install mdadm

Сборка RAID

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

mdadm —zero-superblock —force /dev/sd

* в данном примере мы зануляем суперблоки для дисков sdb и sdc.

Если мы получили ответ:

mdadm: Unrecognised md component device — /dev/sdb
mdadm: Unrecognised md component device — /dev/sdc

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

Для сборки избыточного массива применяем следующую команду:

mdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/sd

* где /dev/md0 — устройство RAID, которое появится после сборки; -l 1 — уровень RAID; -n 2 — количество дисков, из которых собирается массив; /dev/sd — сборка выполняется из дисков sdb и sdc.

Мы должны увидеть что-то на подобие:

mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store ‘/boot’ on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
—metadata=0.90
mdadm: size set to 1046528K

Также система задаст контрольный вопрос, хотим ли мы продолжить и создать RAID — нужно ответить y:

Continue creating array? y

Создание файла mdadm.conf

В файле mdadm.conf находится информация о RAID-массивах и компонентах, которые в них входят. Для его создания выполняем следующие команды:

echo «DEVICE partitions» > /etc/mdadm/mdadm.conf

mdadm —detail —scan —verbose | awk ‘/ARRAY/ ‘ >> /etc/mdadm/mdadm.conf

DEVICE partitions
ARRAY /dev/md0 level=ra >

* в данном примере хранится информация о массиве /dev/md0 — его уровень 1, он собирается из 2-х дисков.

Создание файловой системы и монтирование массива

Создание файловой системы для массива выполняется также, как для раздела:

* данной командой мы создаем на md0 файловую систему ext4.

Примонтировать раздел можно командой:

mount /dev/md0 /mnt

* в данном случае мы примонтировали наш массив в каталог /mnt.

Чтобы данный раздел также монтировался при загрузке системы, добавляем в fstab следующее:

/dev/md0 /mnt ext4 defaults 1 2

Для проверки правильности fstab, вводим:

Мы должны увидеть примонтированный раздел md, например:

/dev/md0 990M 2,6M 921M 1% /mnt

Информация о RAID

Посмотреть состояние всех RAID можно командой:

В ответ мы получим что-то на подобие:

md0 : active raid1 sdc[1] sdb[0]
1046528 blocks super 1.2 [2/2] [UU]

* где md0 — имя RAID устройства; raid1 sdc[1] sdb[0] — уровень избыточности и из каких дисков собран; 1046528 blocks — размер массива; [2/2] [UU] — количество юнитов, которые на данный момент используются.
** мы можем увидеть строку md0 : active(auto-read-only) — это означает, что после монтирования массива, он не использовался для записи.

Подробную информацию о конкретном массиве можно посмотреть командой:

* где /dev/md0 — имя RAID устройства.

Version : 1.2
Creation Time : Wed Mar 6 09:41:06 2020
Raid Level : raid1
Array Size : 1046528 (1022.00 MiB 1071.64 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Update Time : Wed Mar 6 09:41:26 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Consistency Policy : resync

Name : proxy.dmosk.local:0 (local to host proxy.dmosk.local)
UUID : 304ad447:a04cda4a:90457d04:d9a4e884
Events : 17

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc

  • Version — версия метаданных.
  • Creation Time — дата в время создания массива.
  • Raid Level — уровень RAID.
  • Array Size — объем дискового пространства для RAID.
  • Used Dev Size — используемый объем для устройств. Для каждого уровня будет индивидуальный расчет: RAID1 — равен половине общего размера дисков, RAID5 — равен размеру, используемому для контроля четности.
  • Raid Devices — количество используемых устройств для RAID.
  • Total Devices — количество добавленных в RAID устройств.
  • Update Time — дата и время последнего изменения массива.
  • State — текущее состояние. clean — все в порядке.
  • Active Devices — количество работающих в массиве устройств.
  • Working Devices — количество добавленных в массив устройств в рабочем состоянии.
  • Failed Devices — количество сбойных устройств.
  • Spare Devices — количество запасных устройств.
  • Consistency Policy — политика согласованности активного массива (при неожиданном сбое). По умолчанию используется resync — полная ресинхронизация после восстановления. Также могут быть bitmap, journal, ppl.
  • Name — имя компьютера.
  • UUID — идентификатор для массива.
  • Events — количество событий обновления.
  • Chunk Size (для RAID5) — размер блока в килобайтах, который пишется на разные диски.

Подробнее про каждый параметр можно прочитать в мануале для mdadm:

Также, информацию о разделах и дисковом пространстве массива можно посмотреть командой fdisk:

Получить путь к текущей директории с помощью php?

Я хотел бы получить правильный php-код для отображения filepath в папку на моем сервере. В настоящее время я помещаю фактический путь к файлу в мой скрипт, который выглядит следующим образом: /home/username/mydomain.com/dir/upload/

Так что скрипт установлен в подпапке «dir», а мне нужен путь к папке «upload»

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

Решение

Eсть __DIR__ константа, которая будет содержать путь к каталогу файла скрипта.

Таким образом, чтобы получить путь загрузки, вы можете сделать:

Как правильно прописать путь к файлу через require_once?

Backslash (обратная косая) \ в путях к файлам используется, в основном, в виндовс. На линуксе это не прокатит. К счастью винда почти везде понимает и обычный слеш, так что можно писать
d:/penServer/domains/bk/views/footer.php . Если хотите быть увереным в том, что путь будет правильным на любой платформе, используйте DIRECTORY_SEPARATOR .

Вы можете указывать пути или относительно текущего файла ( __DIR__ ), как у вас в примере, или относительно корня сайта ( $_SERVER[‘DOCUMENT_ROOT’] ), или относительно какой-то папки, путь к которой вынесен в конфиг.

А классы так подключать — вообще моветон. Почитайте про автолоадеры, например.

disk_free_space

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

disk_free_space — Возвращает размер доступного пространства в каталоге или файловой системе

Описание

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

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

Директория или раздел диска.

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

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

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

Примеры

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

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

// В Windows:
$df_c = disk_free_space ( «C:» );
$df_d = disk_free_space ( «D:» );
?>

Примечания

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

Смотрите также

  • disk_total_space() — Возвращает общий размер файловой системы или раздела диска

User Contributed Notes 8 notes

Transformation is possible WITHOUT using loops:

= disk_free_space ( «.» );
$si_prefix = array( ‘B’ , ‘KB’ , ‘MB’ , ‘GB’ , ‘TB’ , ‘EB’ , ‘ZB’ , ‘YB’ );
$base = 1024 ;
$class = min ((int) log ( $bytes , $base ) , count ( $si_prefix ) — 1 );
echo $bytes . ‘
‘ ;
echo sprintf ( ‘%1.2f’ , $bytes / pow ( $base , $class )) . ‘ ‘ . $si_prefix [ $class ] . ‘
‘ ;
?>

Nice, but please be aware of the prefixes.

SI specifies a lower case ‘k’ as 1’000 prefix.
It doesn’t make sense to use an upper case ‘K’ as binary prefix,
while the decimal Mega (M and following) prefixes in SI are uppercase.
Furthermore, there are REAL binary prefixes since a few years.

Do it the (newest and recommended) «IEC» way:

KB’s are calculated decimal; power of 10 (1000 bytes each)
KiB’s are calculated binary; power of 2 (1024 bytes each).
The same goes for MB, MiB and so on.

$si_prefix = array( ‘B’, ‘KB’, ‘MB’, ‘GB’, ‘TB’, ‘EB’, ‘ZB’, ‘YB’ );

you are missing the petabyte after terabyte

should look like

‘B’, ‘KB’, ‘MB’, ‘GB’, ‘TB’, ‘PB’, ‘EB’, ‘ZB’, ‘YB’

Another easy way to convert bytes to human readable sizes would be this:

function HumanSize ( $Bytes )
<
$Type =array( «» , «kilo» , «mega» , «giga» , «tera» , «peta» , «exa» , «zetta» , «yotta» );
$Index = 0 ;
while( $Bytes >= 1024 )
<
$Bytes /= 1024 ;
$Index ++;
>
return( «» . $Bytes . » » . $Type [ $Index ]. «bytes» );
>
?>

It simply takes the $Bytes and divides it by 1024 bytes untill it’s no longer over or equal to 1024, meanwhile it increases the $Index to allocate which suffix belongs to the return (adding ‘bytes’ to the end to save some space).
You can easily modify it so it’s shorter, but I made it so it’s more clearer.

function size ( $size , array $options = null ) <

$o = [
‘binary’ => false ,
‘decimalPlaces’ => 2 ,
‘decimalSeparator’ => ‘.’ ,
‘thausandsSeparator’ => » ,
‘maxThreshold’ => false , // or thresholds key
‘sufix’ => [
‘thresholds’ => [ » , ‘K’ , ‘M’ , ‘G’ , ‘T’ , ‘P’ , ‘E’ , ‘Z’ , ‘Y’ ],
‘decimal’ => ‘ B’ ,
‘binary’ => ‘ iB’
]
];

if ( $options !== null )
$o = array_replace_recursive ( $o , $options );

$count = count ( $o [ ‘sufix’ ][ ‘thresholds’ ]);
$pow = $o [ ‘binary’ ] ? 1024 : 1000 ;

for ( $i = 0 ; $i $count ; $i ++)

if (( $size pow ( $pow , $i + 1 )) ||
( $i === $o [ ‘maxThreshold’ ]) ||
( $i === ( $count — 1 ))
)
return

number_format (
$size / pow ( $pow , $i ),
$o [ ‘decimalPlaces’ ],
$o [ ‘decimalSeparator’ ],
$o [ ‘thausandsSeparator’ ]
) .

str_replace (
‘ ,
$o [ ‘sufix’ ][ ‘thresholds’ ][ $i ],
$o [ ‘sufix’ ][ $o [ ‘binary’ ] ? ‘binary’ : ‘decimal’ ]
);
>

var_dump ( size ( disk_free_space ( ‘/’ )));
// string(8) «14.63 GB»
var_dump ( size ( disk_free_space ( ‘/’ ), [ ‘binary’ => true ]));
// string(9) «13.63 GiB»
var_dump ( size ( disk_free_space ( ‘/’ ), [ ‘maxThreshold’ => 2 ]));
// string(11) «14631.90 MB»
var_dump ( size ( disk_free_space ( ‘/’ ), [ ‘binary’ => true , ‘maxThreshold’ => 2 ]));
// string(12) «13954.07 MiB»

On Windows, this also works with distant files, by using their full network path.

For instance, this will give the % of free disk space on the share «dir» from remote host «server» :
= «\\\\server\\dir» ;
echo( floor ( 100 * disk_free_space ( $disk ) / disk_total_space ( $disk )));
?>

It can also work with drive letters mapped to a network path in certain cases.

Смотрим список дисков Linux

Linux отображает подключённые жёсткие диски иначе, чем Windows. В операционной системе от Microsoft мы привыкли к тому, что у нас есть диск C, D, E, и нам не нужно задумываться о реальных именах разделов и жёстких дисков. Все диски размещены в проводнике и очень просто доступны.

В Linux такой возможности нет, как и нет такой абстракции. Диски и разделы именуются как есть, и вы будете иметь дело именно с этими именами. В этой статье мы разберём, как посмотреть список дисков Linux.

Как посмотреть список дисков в Linux

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

Жёсткие диски имеют особенные названия. В зависимости от интерфейса, через который подключён жёсткий диск, название может начинаться на:

  • sd — устройство, подключённое по SCSI;
  • hd — устройство ATA;
  • vd — виртуальное устройство;
  • mmcblk — обозначаются флешки, подключённые через картридер;

В наше время большинство блочных устройств Linux подключаются через интерфейс SCSI. Сюда входят жёсткие диски, USB-флешки, даже ATA-диски теперь тоже подключаются к SCSI через специальный переходник. Поэтому в большинстве случаев вы будете иметь дело именно с дисками sd.

Третья буква в имени диска означает его порядковый номер в системе. Используется алфавитная система. Например sda — первый диск, sdb — второй диск, sdc — третий и так далее. Дальше следует цифра — это номер раздела на диске — sda1, sda2.

Самый простой способ увидеть все подключённые диски — это посмотреть содержимое каталога /dev/ и отфильтровать устройства sd:

Как видите, в моей системе сейчас есть только один диск и два раздела. Дальше мы можем посмотреть, куда примонтирован каждый из разделов:

Здесь, кроме дисков, будут отображаться различные специальные файловые системы: procfs, sysfs, tmpfs, cgroup и так далее. Однако все эти команды не помогут нам получить доступ к информации о дисках. Поэтому нам понадобится кое-что другое. Посмотреть подключённые диски с выводом информации о размере и свободном пространстве можно с помощью утилиты df:

Здесь отображается уже подробная информация. Но вы можете узнать ещё больше с помощью команды lsblk:

В этом случае список примонтированных дисков Linux включает ещё и информацию о точке монтирования, типе раздела (диск, раздел, привод) и его мажорном и минорном номере, по которым можно понять, что это за устройство. Если вам нужна информация о размере, то лучше использовать fdisk:

Это все утилиты, которыми вы можете воспользоваться, чтобы просмотреть список дисков Linux. Но есть ещё и графические утилиты.

Посмотреть список дисков в GUI

Во-первых, если к компьютеру подключено несколько дисков, то вы сможете их увидеть на левой панели файлового менеджера Nautilus или Dolphin. Там будет отображаться список подключенных устройств Linux, их метки и размер:

В Gnome есть программа Disks, которая позволяет настраивать поведение дисков, она же может отображать список подключенных устройств к системе. Вы можете найти её в главном меню:

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

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

А в основной части окна программы отображается список разделов.

Выводы

В этой статье мы разобрали несколько способов посмотреть список примонтированных дисков Linux. Каждый из них может понадобиться в различных ситуациях. Если у вас остались вопросы, спрашивайте в комментариях!

Получение текущих дисков в системе на PHP.

Если быть точнее — то нужно получить путь до папки на уровень выше.

Например, скрит исполняется по адресу:

Нужно получить адрес: domen.ru/site/my/

Адрес до PHP-скрипта, видимо: $_SERVER[«SCRIPT_NAME»]

А вот есть стандартыне способы извлечь подкаталог так сказать? :)
А потом из этого подкаталога извлечь еще раз подкаталог :)

различия между путями на сайте и в файловой системе понимаешь?

какой из путей нужен и для чего?

print $parent_dir = dirname($_SERVER[«SCRIPT_NAME»]).»/..»;

можеш потом $parent_dir через функцию realpath пропустить, если .. не устраивает


> abvgd (06.03.06 16:09) [2]

Какое отношение функция realpath имеет к строке пути на сайте ?
Это просто строка, не имеющая отношения к пути на диске.

Ну я ж привел пример. Естественно, все относится к путям на сайте, URI.

realpath — возвращает канонизированное имя абсолютного пути/pathname.

Описание
string realpath (string path)

realpath() разворачивает символьные ссылки, разрешает ссылки на «/./», «/../» и дополнительные символы «/» в path ввода и возвращает канонизированное absolute pathname. Результирующий путь не будет содержать символьных ссылок, компонентов «/./» или «/../».

abvgd (06.03.06 16:09) [2]

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

Нужно получить адрес: domen.ru/site/my/

используй
$path = parse_url(«http://domen.ru/site/my/back/pm.php»);
print_r($path);

abvgd (06.03.06 16:18) [7]

эх. И еще раз спасибо :)

А чем realpath не подходит?
А-а-а, или он возвращает именно физический путь к файлу на сервере?

kaZaNoVa © (06.03.06 16:18) [8]

о, еще способ — спасибо :)

Народ! А что корректнее использовать:

$_SERVER[«SCRIPT_NAME»] или __FILE__ ?


> А чем realpath не подходит?

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


> $_SERVER[«SCRIPT_NAME»] или __FILE__ ?

$_SERVER[«PHP_SELF»]
:))

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

Получить путь к текущей директории с помощью php?

Я хотел бы получить правильный php-код для отображения filepath в папку на моем сервере. В настоящее время я помещаю фактический путь к файлу в мой скрипт, который выглядит следующим образом: /home/username/mydomain.com/dir/upload/

Так что скрипт установлен в подпапке «dir», а мне нужен путь к папке «upload»

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

Решение

Eсть __DIR__ константа, которая будет содержать путь к каталогу файла скрипта.

Таким образом, чтобы получить путь загрузки, вы можете сделать:

Каталоги

Получение файлов из каталога

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

scandir (адрес, сортировка, контекст)

адрес — абсолютный или относительный адрес каталога

сортировка — определяет, в каком порядке будут находиться файлы в массиве. Принимает значения: SCANDIR_SORT_ASCENDING — в алфавитном порядке (по умолчанию), SCANDIR_SORT_DESCENDING — в алфавитном порядке, но по убыванию, SCANDIR_SORT_NONE — без сортировки

контекст — ресурс контекста. Необязательный параметр.

Указанные константы для сортировки появились, начиная с версии PHP 5.4.0. В предыдущих версиях сортировка указывалась по другому. Любое значение, отличное от нулевого, определяет сортировку по убыванию, а 0 сортировку по возрастанию.

В массиве, который возвращает функция, кроме имён файлов и директорий, всегда есть два значения: «.» и «..». Одна точка означает текущий каталог, а две точки означают родительский каталог.

Для примера создадим в папке со скриптами папку с именем mydirectory. Скопируем в неё несколько файлов. Выведем на страницу список файлов из директории.

Когда получены имена файлов, можно работать с ними. Чтобы отличить файлы от папок, можно использовать функции is_file() и is_dir() , которые описаны в прошлой теме.

В более ранных версиях PHP получение файлов из каталога осуществлялось иначе. Для этого каталог нужно открыть. Это делается при помощи функции opendir() , которая возвращает дескрептор каталога. Используя этот дескрептор, функция readdir() возвращает имя одного файла или каталога. Сначала первый файл, потом следующий и так далее. Когда файлы заканчиваются, функция возвращает false . Чтобы получить все файлы, нужно запустить функцию в цикле, пока она не вернёт false .

Выбор каталога

Часто возникает необходимоть работать с текущим каталогом, то есть с тем, в котором находится скрипт. Для выбора этого каталога не обязательно указывать абсолютный адрес. Можно указать по-другому. Одна точка означает текущую директорию, а две точки означают родительскую директорию. Пример:

Функция getcwd() возвращает адрес текущей директории.

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

Создание, перемещение и удаление каталога

Функция mkdir() создаёт новый каталог. Возвращает true в случае успеха.

mkdir (адрес, режим доступа, вложенные каталоги, контекст)

адрес — абсолютный или относительньный адрес нового каталога

режим доступа — режим доступа к каталогу. По умолчанию 0777

вложенные каталоги — позволяет создать каталог вместе с вложенным каталогом, в котором также могут быть вложенные каталоги. Общая структура описывается в адресе. Для этого параметру нужно указать true .

контекст — ресурс контекста

Обязателен только первый параметр.

Создадим в текущем каталоге новый каталог. Учитывайте, что в 6 строке текущим был выбран другой каталог.

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

Функция rmdir() удаляет каталог. При этом он должен быть пустым. Если он не пустой, то сначала нужно переместить или удалить из него все файлы. Функция возвращает true при успешном удалении.

Коприрование материалов сайта возможно только с согласия администрации

Создание сайта на WordPress

Что как и почему в WordPress

Чтение файлов и каталогов в php-сценарии

Сначала — выбор пути к файлу или каталогу, затем — чтение из каталога и/или чтение из файла.

Путь к файлу

Абсолютный путь — это полный путь к файлу от корневого каталога (папки) в файловой системе.

В то время как абсолютный путь к файлу в Windows начинается с имени диска (например, «C:/www/html/file.html»), абсолютный путь к файлу страницы с веб-адресом //mysite.ru/file1.php, которая находится на Unix-сервере (Apache), имеет вид

где userlogin — логин пользователя на сервере.

Слеш (/) обозначает корневой каталог.

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

В данном случае это «»/home/userlogin/public_html/mysite.ru«».

«/myplugin/file2.php» полный путь от корня сайта (адрес соответствующей веб-страницы — «//site.ru//myplugin/file2.php»)

Это значит, что в ссылках на локальные страницы сайта можно указывать только путь от корня сайта (без протокола и домена) «/myplugin/file2.php».
Относительный путь — это путь относительно документа, в котором используется ссылка на файл.

Например, пусть в папке сайта «myplugin» есть файл file2.php и папка «images», в которой находится файл «image1.jpg». Путь к файлу изображения из файла file2.php: «images/image1.jpg».

Но если в начале этого пути добавить слеш (/) , т.е. написать «/images/image1.jpg», это будет путь к другому файлу, который находится в другой папке «images» в корне сайта mysite.ru (см. рисунок).

Чтобы подняться на директорию вверх, нужно написать»../».

Например, в файле file2.php можно указать на файл файл file1.php (в корневой папке сайта) как на файл в родительском каталоге «../file1.php» или в корневом каталоге «/file1.php».

«/tmp/file.html» полный путь от корня сайта (соответствующий веб-адрес «//site.ru//tmp/file.html»)
«tmp/data/» путь относительно текущего каталога («tmp» — это подкаталог текущего каталога, а «data» — подкаталог каталога «tmp»)
«./images/» подкаталог текущего каталога
«file.php» файл в текущем каталоге
«./file.php» файл в текущем каталоге
«../» родительский каталог
«../file.php» файл в родительском каталоге
«../../file.php» файл в каталоге, который на два уровня выше текущего каталога

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

bool file_exists(string $name) проверяет, существование файла или каталога с заданным именем
if ( !file_exists(«file.txt») ) exit(«Файл не существует»);
string basename(string $path) возвращает имя файла из полного пути (т.е. имя файла без пути)
string dirname(string $path) возвращает имя каталога из полного пути; для текущего файла: dirname(__FILE__)
array pathinfo (string path [, int options]) возвращает ассоциативный массив, который содержит элементы пути path: dirname, basename и extension.
options позволяет задать, какие элементы будут возвращены: PATHINFO_DIRNAME, PATHINFO_BASENAME и PATHINFO_EXTENSION.
string realpath(string $path) преобразует относительный путь в абсолютный, например, в сценарии, расположенном в корневой папке:
echo realpath(«file1.php»); // выведет /home/userlogin/public_html/mysite.ru/file1.php
string tempname(string $dir, string $prefix) генерирует (уникальное) имя временного файла
is_readable($path) проверяет возможность чтения файла или каталога***
bool is_dir(string $path) возвращает TRUE, если $path — это путь к существующему каталогу ***.
bool is_file ( string $path ) возвращает TRUE, если $path — это путь к существующему файлу (результат кэшируется***).
string getcwd (void) возвращает текущий каталог (например, «/home/userlogin/public_html/mysite.ru/myplugin»)
int chdir( string $dir ) изменяет текущий каталог (переходит в заданный каталог)
boolean chroot (string $path) изменяет корневой каталог

*** Результаты функций, возвращающих информацио о состоянии файлов, кэшируются. Это функции 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().
Если во время выполнения php-скрипта состояние файла может изменяться, и это нужно проверять, следует очищать кэш. Это делает функция clearstatcache();

Чтение каталога

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

resourse opendir (string $path) открывает каталог, например, текущий каталог можно открыть так:
opendir(‘.’);
string readdir (resource $handle) Возвращает имя следующего по порядку элемента каталога, для которого создан дескриптор $handle (порядок следования элементов зависит от файловой системы).
void rewinddir (resource $handle) сбрасывает дескриптор каталога $handle (чтобы он указывал на начало каталога)
void closedir ($handle) закрывает каталог

Чтение каталога без создания дискриптора:

array scandir (string $path [, int order]) возвращает массив файлов и каталогов из заданного каталога, ессли каталог не найден, возвращает FALSE и генерирует сообщение об ошибке уровня E_WARNING.
По умолчанию элементы сортируются в алфавитном порядке, а если необязательный параметр order равен 1, — по убыванию.
array glob ( string pattern [, int flags] ) возвращает массив файлов и каталогов, пути к которым соответствуют заданному шаблону pattern, а в случае ошибки возвращает FALSE.
флаги:
GLOB_MARK — добавляет слеш к каждому возвращаемому пути
GLOB_NOSORT — возвращает файлы без сортировки
GLOB_NOCHECK — возвращает шаблон , если не был найден ни один файл.
GLOB_NOESCAPE — обратные слеши не экранируют метасимволы
GLOB_BRACE — раскрывает для совпадения с ‘a’, ‘b’ или ‘c’
GLOB_ONLYDIR — возвращает только катологи

Все файлы с расширением «.txt» из папки «texts» в корневой папке сайта:

Продолжение — о чтении данных из файла — в следующей статье, которая называется
«Чтение файлов и каталогов в php-сценарии, продолжение: файлы».

Чтение файлов и каталогов в php-сценарии : 1 комментарий

Да есть плагин Wp-editor для этих целей. Весьма функциональный.

Илон Маск рекомендует:  Asp построение в архитектуре клиент сервер
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL