PHP имеет множество функций, связанных с файловой системой, которые не только помогают открывать файлы, но и отображать содержимое каталогов, перемещать файлы и т. д. Многие люди даже написали веб-файловые менеджеры с использованием PHP.
Прежде всего, мне нужно напомнить вам кое-что о пути к файлу: в Windows вы можете использовать косую черту «/» или обратную косую черту «» в пути к файлу, тогда как в других операционных системах используется только «/». По соображениям совместимости в следующих примерах используется представление «/»:
Следующий простой сценарий отображает базовый список каталогов. Комментарии в коде объясняют каждый шаг:
<? /* Укажите полный путь к каталогу, ккоторому
вы хотите получить доступ, в переменной $dir_name*/
$dir_name = /home/me/;
заданного каталога* /
$dir = opendir($dir_name);
/* Начинаем добавлять фрагмент текста в место, где будет располагаться элемент списка (имя файла) */
$file_list = <ul>
/* Используйте метод Оператор while для чтения всех элементов открытого каталога. Если имя файла не является ни «.», ни «..», выведите имя файла в списке */
while ($file_name = readdir($dir)) {
if (($file_name != .) && ($file_name != ..)) {
$file_list .= <li>$file_name;
}
}
/* Завершаем список*/
$file_list .= </ul>
/* Закрываем дескриптор открытого каталога и завершаем сегмент PHP-кода */
closedir($dir);
?>
<!-- Запуск HTML -->
<HTML >
<ГОЛОВА>
<TITLE>Список каталогов</TITLE>
/
ГОЛОВА> <ТЕЛО>
<!-- Используйте PHP для вывода имени читаемого каталога -->
<P>Файлы в: <? echo $dir_name ?></p>;
<!-- Используйте PHP для печати списка каталогов -->
<? эхо $file_list ?>
</ТЕЛО>
</HTML>
На данный момент список каталогов уже существует. Вам необходимо помнить, что для чтения содержимого каталога или файла (вы скоро это увидите) платформа PHP, на которой находится пользователь, должна иметь как минимум разрешение на чтение каталога или файла.
В следующем примере показано, как копировать файлы:
<? /* Поместите путь к файлу, который нужно скопировать, в переменную $original, а целевой путь для копирования — в переменную $copied */
$original = /home/me/ моиданныебаседамп;
$copied = /archive/mydatabasedumo_1010;
/* Используйте функцию copy(), чтобы скопировать исходный файл в место назначения, или завершите выводом сообщения об ошибке*/
@copy($original, $copied) или die(Не удалось скопировать file.);
?>
Пример сценария — это первый шаг в резервном копировании системы. При запуске сценария он сначала копирует базу данных в другое место по соображениям безопасности. Изменяя crontab, вы можете выполнить этот файл в выбранное время без вмешательства пользователя.
Предполагая, что Lynx уже установлен в системе, вы можете создать запись в crontab для запуска Lynx и доступа к файлам. Доступ к файлу запустит сценарий и создаст копию файла. В следующем примере скрипт запускается в 5 часов утра, а затем выключается Lynx:
0 5 * * * [имя пользователя] lynx -dump http://localhost/copyfile.php 1>/dev/null 2>&1
если вы используете версию PHP CGI, вы можете пропустить часть Lynx и обратиться к двоичным файлам:
0 5 * * * [имя пользователя] php /path/to/copyfile.php 1>/dev/null 2>&1