Рекурсивное изменение прав доступа (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; ?> |