Рекурсивное изменение прав доступа (CHMOD) на PHP
Понедельник, 05 Июл 2010 9:41Очень часто приходится работать с хостингами, на которых отсутствуют элементарные средства перебивки прав доступа. Глядя на эту несправедливость я решил написать простой скрипт по изменению прав (chmod), так как на 99% хостингов права вебсервера (webserver(99)) отличны от прав ftp пользователя, в результате при создании файлов вебсервером их потом невозможно удалить или изменить по фтп. Ну думаю вы и сами встречались с такой проблеммой.
Сделать это рекурсивно можно, исполнив PHP-сценарий
Вот пример:
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 | <?php function chmod_R($path, $perm) { $handle = opendir($path); while ( false !== ($file = readdir($handle)) ) { if ( ($file !== ".") && ($file !== "..") ) { if ( is_file($path."/".$file) ) { //если текущая позиция это файл то... chmod($path . "/" . $file, $perm['f']); } else { //если текущая позиция это папка то... chmod($path . "/" . $file, $perm['d']); chmod_R($path . "/" . $file, $perm); // рекурсивно проверяем папочку } } } closedir($handle); } $path = $_SERVER["QUERY_STRING"]; if ( $path{0} != "/" ) { $path = $_SERVER["DOCUMENT_ROOT"] . "/" . $path; } $perm=array(); $perm['f']=0644; // эти права будут установлены для файлов $perm['d']=0755; // а эти для папок chmod_R($path, $perm); echo $path; ?> |
Многие наверно видели прозрачные счетчики которые при наведении курсора становились обычными…Так вот речь пойдет как раз о том как этого эффекта добится, причем мы не будем использовать ***.js , только файл стилей (***.css) вашего сайта.
Шаблонизатор является основным модулем системы любой CMS системы. Думаю почему я так считаю объяснять не надо. Любая CMS должна быть гибкой и представлять определённый минимальный набор функционала и сочетать универсальность подстройки дизайна. Именно универсальность интеграции дизайна и позволяет реализовать шаблонизатор. Шаблонизаторы бывают разных типов, от основанных на php шаблонах (самые простые) и до блочно модульных. Первый тип шаблонизаторов достаточно прост в реализации, но в свою очередь и более громоздкий, так как для интеграции требует как минимум базового знания языка программирования. По этому я хочу рассказать о втором типе.