- Создание сайта на WordPress
- Что как и почему в WordPress
- Листинг каталогов и .htaccess
- Индексный файл или запрет вывода листинга
- Изменение страницы листинга
- Листинг каталогов и .htaccess : 2 комментария
- Перечень файлов в папке php списком вывести
- Несколько способов получить список файлов из папки
- Получение списка файлов из папки с помощью -> scandir
- Результат получения списка файлов из папки с помощью scandir
- Получение списка файлов из папки с помощью -> opendir + readdir
- Результат получения списка файлов с помощью -> opendir + readdir
- Список файлов из папки php с ссылкой на него
- Как нумеровать файлы в папке php
- Зачем нужно нумеровать файлы в папке php
- Неверный алгоритм нумерации файлов в папке php
- Что говорит интернет о нумерации фалов в папке php
- Получаем отчеты по сетевым папкам с помощью PowerShell
- Получаем все сетевые папки
- Получаем размер сетевой папки
- Получаем файлы по владельцу
- Получаем файлы по дате создания
Создание сайта на WordPress
Что как и почему в WordPress
Листинг каталогов и .htaccess
Вы, должно быть, знаете, что сервер Apache может выводить в браузер листинг (т.е. список) содержимого ваших папок на сервере? Обычно вывод листинга запрещают, но его также можно разрешить и использовать, например, если нужно предоставить посетителям сайта .doc-файлы для скачивания.
Индексный файл или запрет вывода листинга
Если ввести в адресную строку браузера путь к папке, открывается индексный файл (например, index.html, index.php), который находится внутри этой папки, но если индексного файла в папке нет, а выдача листинга каталога не запрещена, появляется содержимое этой папки (каталога).
Листинг содержимого папки test
Обычно это нежелательно, поэтому в каждую папку нужно помещать индексный файл, пусть даже пустой) или задать в файле .htaccess, который находится внутри папки или внутри родительской папки (например, в корневой папке сайта) , запрет выдачи листинга каталогов:
Запрет распространяется на все дочерние (вложенные) папки. Поэтому, если вы хотите показать листинг файлов в какой-то папке, в ней не должно быть индексных файлов и в нее нужно поместить файл .htaccess с разрешением вывода листинга содержимого этой папки (и всех вложенных):
При этом можно запретить показывать некоторые файлы, в том числе с использованием регулярных выражений, например:
Здесь заданы файлы с расширением .php и начинающиеся с myfile (спецсимвол * заменяет любое количество символов).
Изменение страницы листинга
Если есть желание показывать пользователям листинг файлов, выдаваемый сервером, желательно убрать из него служебную информацию и добавить стили. Добавим в файл .htaccess строчки
Содержимое файла HEADER.html будет выводиться перед листингом, а файла README.html — после листинга.
HEADER.html (имена этих файлов могут быть любыми):
Вид листинга изменится так:
Это уже лучше, а возможности для дальнейших усовершенствований зависят от версии сервера Apache.
См. документацию: Apache Module mod_autoindex(Apache HTTP Server Version 2.2) и
Обсуждение на форуме
Листинг каталогов и .htaccess : 2 комментария
Автор, когда пишешь статью, хоть проверяй, этот код неправильный:
# разрешение выдачи листинга
Options Indexes
а правильный:
# разрешение выдачи листинга
Options +Indexes
Источник
Перечень файлов в папке php списком вывести
Сегодня мы займёмся списком файлов в php. И для создания списка файлов, нам потребуется определенная функция. Мы уже писали о
Несколько способов получить список файлов из папки
Получение списка файлов из папки с помощью -> scandir
Нам нужен путь на сервере до корневой папки, у меня эта конструкция весит в самом верху сайта, именно в том виде, потому, что первую часть намного легче запомнить, чем вторую:
Далее соединим путь на сервере с путем от корневой до файла:
Применим к данной переменной и получим список всех элементов в папке:
Выведем список фалой из папки с помощью print_r:
Соберем весь код вместе:
$dir = $home . ‘/__a-data/Z-arhiv/scandir-ili-sodergimoe-v-papke/1/’;
Результат получения списка файлов из папки с помощью scandir
Получение списка файлов из папки с помощью -> opendir + readdir
Для получения списка файлов из папки можно воспользоваться :
opendir — открываем папку уже в выше приведенном пункте $dir
Создаем цикл и внутри прописываем условие пока файлы не кончатся цикл продолжается.
Внутри цикла мы можем сделать любое условие для фильтрации списка файлов из папки php? соберем весь код вместе:
while (false !== ($file = readdir($handle))) <
Результат получения списка файлов с помощью -> opendir + readdir
Список файлов из папки php с ссылкой на него
Как из списка файлов сделать список файлов с ссылками на эти файлы!?
Хотите!? Ну конечно же хотите! В чем смысл.
Зачем и где это можно применить!?
Смысл в том, что предположим у вас есть файлы в папке с контентом. Каждой папке принадлежит список, который формируется вручную!? Уже звучит глупо! Но я раньше так и делал!
Не буду вас долго мурыжить — вот эта страница формируется автоматически из всех папок, которые существуют на сайте! Достаточно удалить файл из папки, список обновится при следующей перезагрузке страницы!
Я долго шел к этому!
Мы немного отвлеклись.
Возьмем тот, же алгоритм и добавим туда немного кода и получим вот такой вариант:
В переменной $primer_url — путь до папки.
while (false !== ($file = readdir($handle))) <
+ можно взять и вывести еще и название страницы, но я уже есть хочу и что-то я запарился эту страницу оформлять.
Как нумеровать файлы в папке php
Зачем нужно нумеровать файлы в папке php
Когда работаешь с файлами и когда их много, то всегда тяжело найти какой-то из файлов. Но когда файлы пронумерованы уже в папке, то поиск файлов не становится мукой — становится простым.
Можно, конечно, воспользоваться поиском, во многих программах они существуют — но это уже совсем другой вопрос.
Нумерация нужна еще и для того, чтобы все файлы складывались по порядку.
Неверный алгоритм нумерации файлов в папке php
Самое простое. что приходит на ум, это создание следующего файла -> количество файлов в папке +1.
И этот алгоритм работает верно до тех пор, если вы вдруг не удалили файл который идет перед последним. Т.е. если у вас файлов 1,2,3 и вы удалили файл под номером 2 и у вас осталось 1,3 то следующий номер файла будет 3. Надеюсь это понятно.
Что делать!? Чтобы нумерация файлов в папке не ломалась!?
Нужно на место удаленного файла создать новый. С номером того файла, который отсутствует. Это будет не по времени создания файлов, но зато будет по порядку! А порядок — это хорошо
Что говорит интернет о нумерации фалов в папке php
Удивительно, что иногда, такие простые вопросы не могут просто решить и предлагают какие-то «ШНЯЖНЫЕ» решения!
Мы эту задачку очень просто решили!
Отделяем номера, складываем в массив, сортируем по возрастанию.
Во втором цикле сравниваем (порядковый номер цикла +1) и номера по порядку из выше идущего массива.
При первом же не соответствии останавливаем цикл, выдаем результат.
Не буду всю функцию выкладывать, вы сможете её скачать полностью в файле.
Создадим два массив для пример, -такие массивы будут у вас получаться при сканировании папки :
$COUNT_ARRAY = array(‘001_primer.html’,’002_prime.htmlr’,’003_primer.html’,’004_primer.html’) ;// пример, какой массив должен получиться
$COUNT_ARRAY_2 = array(‘001_primer.html’, ‘003_primer.html’,’004_primer.html’) ;// пример #2, какой массив должен получиться
Примерим функцию к первому массиву с файлами из папки, там у нас не нарушена нумерация :
Примерим функцию ко второму массиву с файлами из папки, там у нас нарушена нумерация? файла под номером два не существует :
Источник
Получаем отчеты по сетевым папкам с помощью PowerShell
Джеффри Хикс опубликовал очередную статью по PowerShell, посвященную на этот раз управлению файловыми серверами. Мы решили разбить ее на две части: построение отчетов по файловому серверу и непосредственно управление файловыми шарами. В первой части рассмотрим отчеты.
В посте будут рассмотрены следующие вопросы:
- Как вывести список всех сетевых папок на компьютере (компьютерах)
- Создаем отчеты о размерах сетевых папок
- Определяем владельцев файлов
- Находим дату создания файлов выявляем «старые» файлы и файлы, созданные за определенный промежуток времени)
Итак, под катом вы найдете перевод статьи File Server Management with Windows PowerShell.
Получаем все сетевые папки
Начнем с того, что определим, что же расшарено. Задача проста: просто осуществляем запрос класса Win32_Share, чтобы использовать Windows Management Instrumentation (WMI). Вам даже не нужно логиниться на файловом сервере. Вы можете запустить эту команду откуда угодно.
Вместо chi-fp01 укажем имя интересующего нас компьютера
Запустив эту команду Вы получите все сетевые папки, включая принтеры (если таковые имеются). Но так как мы говорим о файловых шарах, то давайте ограничим запрос. Все экземпляры Win32_Share имеют свойство Type, как показано в таблице 1.
Добавим фильтр в первоначальную команду:
Тем самым мы выводим только нужную информацию.
Но если вы ищите также и скрытые папки – те, которые заканчиваются знаком доллара ($) – фильтр придется слегка переписать:
В WMI знак процента (%) используется вместо знака подстановки (wildcard). Вывести все папки, кроме тех, которые скрыты чуть сложнее.
Команда выведен все объекты Win32_Share, у которых свойство Type равно 0 и имя не заканчивается на $.
Получаем размер сетевой папки
Довольно часто необходима информация о том, сколько места занимают файловые шары. Используем Get-ChildItem, или его сокращение dir, и передадим результаты в Measure-Object:
В итоге вы получите информацию об общем числе объектов, размер в байтах, наименьшие и наибольшее размерах файлов. В предыдущей команде, применил фильтр. В PowerShell 3.0 то же самое можно сделать проще, однако та команда, которую я использовал, работает как v2.0, так и 3.0. Ее лучше всего запускать локально. Код в примере 1 комбинирует эту команду с нашей техникой WMI, чтобы получить отчет о размере высокоуровневых папок.
Пример 1: Отчет о размерах высокоуровневых сетевых папок
Вы можете форматировать или обрабатывать $results как вашей душе будет угодно. Нужна удобоваримая таблица? Просто используйте следующую команду:
Тем самым можно сделать полный отчет по использованию всех папок на файловом сервере не составляет труда. Сэкономьте время, воспользуетесь примером 2.
Пример 2: Отчет об использовании файловых шар
И снова я слегка отформатирую таблицу.
Получаем файлы по владельцу
Двигаемся дальше – найдем владельцев файлов. Если вы используете квоты, отчеты уже наверняка получаете. В противном случае, все, что вам нужно – это извлечь ACL файла, который включает в себя владельца, и агрегировать результаты. Лучше всего добавить владельца файла в качестве кастомного свойства
Мы можем группировать по свойству нового владельца и затем обрабатывать новый объект.
Пара усилий и вы можете применить тот же подход к файловой шаре, как указано в коде примера 3.
Пример 3: Группируем файловые шары по владельцу
Я также должен указать на то, что могут проблемы: с файлами, имя которых более 260 символов или содержит необычные символы, особенно если вы пытаетесь запустить Get-ACL. В PowerShell 3.0 этот командлет имеет параметр -LiteralPath, что помогает решить вышеуказанные проблемы.
Опять выведем читаемую таблицу.
Получаем файлы по дате создания
Последняя техника создания отчетов, которую я хочу продемонстрировать – это создание отчета с последними созданными файлами. Фактически, мы создаем коллекцию объектов, которую можем использовать несколькими способами. Возможно вы захотите использовать объекты или удалить или переместить файлы, или можете захотите построить отчет, который можно отправить руководству. Всегда создавайте команды PowerShell так, чтобы потом их можно использовать.
Определить возраст файл не так просто. В PowerShell файловый объект (объект типа файл) имеет несколько свойств, которые вы возможно захотите использовать. Например, команда:
дает вывод, представленный на скриншоте ниже.
Лично я считаю, что лучше использовать LastWriteTime, который обозначает, когда к файлу в последний раз обращались. Мне встречались ситуации, когда LastAccessTime обновлялся через сторонние программы, например, антивирус, что само по себе уже не означает правды. И LastAccessTime был деактивировал еще со времени Windows Vista, хотя вы можете его включить. Вам также нужно быть осторожным, потому что эти значения могут меняться в зависимости от того, копируете ли вы или перемещаете файлы между дисками (between volumes). Но вы можете решить это сами. Используя этот файл как пример, мы может заставить PowerShell сказать нам, насколько стар файл. См. пример 4.
Пример 4. Определяем возраст файлов
Свойство Age является объектом TimeSpan, и свойство Days является просто свойством TotalDays этого объекта. Но так как мы можем этом сделать для одного файла, мы можем сделать и для других Давайте взглянем на мою общую папку и найдем все файлы, которые не менялись за последние 400 дней.
Я пойду дальше и включу еще и владельца файла. На скриншоте ниже показаны результаты от запуска этого код в удаленной сессии на моем файловом сервере.
Я могу сохранить эти результаты в переменную и использовать их в любое время. Так как у меня есть полное имя файла, передать в другую команду, например, Remove-Item, не составит труда.
Одной из моих любимых техник является определение того, сколько файлов было изменено за год.
Как вы можете видеть на скриншоте, все выглядит причесано. Нужны детали? Можно проанализировать свойство Group, которое представляет собой коллекцию файлов.
Полезно знать, сколько файлов не изменялось за 30, 90 или 180 дней. К сожалению, простого способа использовать Group-Object для этого не существует, поэтому мне необходимо придется «пойти иным путем»; смотрите пример 5.
Пример 5: Определяем период изменения файлов
На рисунке ниже показан результат, когда я запустил этот код для папки с моими скриптами, которая, как я знаю, имеет плотное распределение по возрасту (decent age distribution). Мой код не включает в себя актуальные файлы, но это было бы слишком сложно изменить мой пример.
За основу поста использована первая часть статьи File Server Management with Windows PowerShell.
Кстати, о том, как найти файлы с помощью PowerShell и WMI Джеффри Хикс пишет в своем блоге (часть 1 и 2).
Источник