В предыдущих уроках Вы познакомились с тем, как использовать РНР для чтения данных из файла и записи данных в файл с помощью семейства функций fopen (). Однако полученных знаний недостаточно для программирования таких операций манипулирования файлами, как удаление файлов, создание символических или жестких ссылок на файлы (в Unix) или копирование файлов. В этом разделе мы обсудим, как решать упомянутые задачи в РНР.
Хотя большинство из рассматриваемых в этом разделе функций (например, копирование файлов) вы можете реализовать самостоятельно, используя имеющиеся знания РНР, без такой функции, как удаление файла, не обойтись. В РНР эта функция называется unlink () и имеет следующий синтаксис:
unlink($filename)
где $filename — имя удаляемого файла. Функция unlink () возвращает булевское значение, показывающее, была ли операция удаления успешной. Как было упомянуто ранее в этой главе при обсуждении прав доступа к файлам, для того, чтобы в РНР удалить файл, необходимо, чтобы пользователь, от имени которого запущен РНР, имел разрешение на запись в каталог, содержащий этот файл.
Использование функции unlink ()
<?php $files = glob("/tmp/*.tmp"); foreach($files as $val) { unlink($val);} ?>
Еще одной полезной функцией при работе с файлами является функция сору (). Как следует из ее названия, эта функция копирует заданный файл в новое место (или в тот же каталог, но под другим именем), сохраняя исходный файл неизменным. Функция сору () имеет следующий синтаксис:
copy($source_file, $dest_file)
где $source_file представляет путь и имя файла источника, a $dest_file задает путь и новое имя файла назначения. Функция сору () возвращает булевское значение, указывающее на успешное или неудачное завершение операции копирования. В приведенном ниже примере эта функция совместно с функцией unlink () применяется для создания функции move (), которая выполняет перемещение файла.
Использование функции сору()
<?php function move($source, $dest) { if(!copy($source, $dest)) return false; if(!unlink($source)) return false; return true; } if(!move("/tmp/myfile.txt", "/tmp/tmpdir/newfile.txt"){ echo "Ошибка! Невозможно переместить файл!<ВR>"; }