Анимация
JavaScript
|
Главная Библионтека Определение возможности доступа В PHP есть еще несколько функций, начинающихся с префикса is . Они довольно интеллектуальны, поэтому рекомендуется использовать их перед "опасными" открытиями файлов. bool is readable(string $filename) Возвращает true, если файл может быть открыт для чтения. bool is writeable(string $filename) Возвращает true, если в файл можно писать. bool is executable(string $filename) Возвращает true, если файл - исполняемый. Определение параметров файла array stat(string $filename) Функция собирает вместе всю информацию, вхдаваемую операционной системой для указанного файла, и возвращает ее в виде массива. Этот массив всегда содержит следующие элементы с указанными ключами: 0 - устройство; 1 - номер узла inode; 2 - атрибуты защиты файла; 3 - число синонимов ("жестких" ссылок) файла; 4 - идентификатор uid владельца; 5 - идентификатор gid группы; 6 - тип устройства; 7 - размер файла в байтах; 8 - время последнего доступа в секундах, прошедших с 1 января 1970 года; 9 - время последней модификации содержимого файла; 10 - время последнего изменения атрибутов файла; 11 - размер блока; 12 - число занятых блоков. Как мы видим, в этот массив помещается информация, которая доступна в системах Unix. Под Windows многие поля могут быть пусты (например, в ней у файлов нет владельца, а значит, нет и идентификатора владельца файла и группы). Обычно они бывают совершенно бесполезны при написании сценариев. Если $filename задает не имя файла, а имя символической ссылки, то все-таки будет возвращена информация о том файле, на который ссылается эта ссылка (а не о Если файла с указанным именем не существует, он создается пустым. Функции для работы с именами файлов Нам довольно часто приходится манипулировать с именами файлов. Например, " прицепить" к имени слева путь к какому-то каталогу или, наоборот, из полной спецификации файла выделить его непосредственное имя. В связи с этим в PHP введены несколько функций для работы с именами файлов. string basename(string $path) Вхделяет основное имя файла из пути $path. Вот несколько примеров: ссылке). Для получения информации о ссылке можно воспользоваться вызовом lstat(), имеющим точно такой же синтаксис, что и stat(). Специализированные функции Для того чтобы каждый раз не возиться с вызовом stat() и разбором выданного массива, разработчики PHP предусмотрели несколько простых функций, которые сразу возвращают какой-то один параметр файла. Кроме того, если объекта (обгчно файла), для которого вызвана какая-либо из ниже перечисленных функций, не существует, эта функция возвратит false. int fileatime(string $filename) Возвращает время последнего доступа (access) к файлу (например, на чтение). Время вхражается в количестве секунд, прошедших с 1 января 1970 го-да. Если файл не обнаружен, возвращает false. int filemtime(string $filename) Возвращает время последнего изменения файла или false в случае отсутствия файла. int filectime(string $filename) Возвращает время создания файла. int filesize(string $filename) Возвращает размер файла в байтах или false, если файла не существует. int touch(string $filename [, int $timestamp]) Устанавливает время модификации указанного файла $filename равным $timestamp (в секундах, прошедших с 1 января 1970 года). Если второй параметр не указан, то подразумевается текущее время. В случае ошибки возвращается false. В предыдущих версиях PHP (например, в версии 3) функция была гораздо менее "интеллектуальна". Например, для "чистого" имени файла она возвращала его самого, а не точку. string tempnam(string $dir, string $prefix) Генерирует имя файла в каталоге $dir с префиксом $prefix в имени, причем так, чтобы созданный под этим именем в будущем файл был уникален. Для этого к строке $prefix присоединяется некое случайное число. Например, вызов tempnam("/tmp","temp") может возвратить что-то типа /tmp/temp3a6b243c. Если такое имя нужно создать в текущем каталоге, передайте, как обычно, $dir=".". Обратите внимание, что использовать tempnam() в следующем контексте опасно: $fname=tempnam(); $f=fopen($fname,"w"); работаем с временным файлом Дело в том, что хотя функция и возвращает уникальное имя, все-таки существует вероятность того, что между tempnam() и fopen() сюда "вклинится" какой-нибудь другой процесс, в котором функция tempnam() сгенерировала идентичное имя файла. Такая вероятность исчезающе мала, но все-таки она существует. Поэтому лучше воспользоваться функцией tmpfile() или функциями блокировки. echo basename("/home/somebody/somefile.txt"); в1водит "somefile.txt" echo basename("/"); ничего не в1водит echo basename("/."); выводит "." echo basename("/./"); также выводит "." Обратите внимание на то, что функция basename() (да и все последующие) не проверяет существование файла. Она просто берет часть строки после самого правого слэша и возвращает ее. С облегчением можно также сказать, что функция basename() правильно обрабатывает как прямые, так и обратные слэши под Windows. string dirname(string $path) Возвращает имя каталога, выделенное из пути $path. Функция довольно "разумна" и умеет обрабатывать нетривиальные ситуации, как это явствует из примеров: echo dirname("/home/file.txt"); выводит "/home" echo dirname("../file.txt"); выводит ".. " echo dirname("/file.txt"); в1водит "/" под Unix, "\" под Windows echo dirname("/"); то же самое echo dirname("file.txt"); выводит "." Заметьте, что если функции dirname() передать "чистое" имя файла, она вернет "." , что означает "текущий каталог". 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 [ 84 ] 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |