|
|
|
|
|
для: GeorgeIV
(30.12.2008 в 17:43)
| | "и делаю все права на все вложенные папки и файлы нескольким щелчками мыши."
286 папок, в каждой из которых по 4-10 подддиректорий, в некоторых из которых есть еще по одной поддиректории... Вот и хотелось как по-проще - и на сейчас, и, главное, на будущее. | |
|
|
|
|
|
|
|
для: Владимир55
(30.12.2008 в 17:33)
| | из любой дирректории такие функции будут работать если записать полный путь к корню
xxxxxx('/home/site/www');
Возможно и с относительными путями будет работать как xxxxxx('../../../www'); но я-бы так не делал
и ещё масса препятствий может получиться, таких как safe_mode , как выше говорилось является-ли владелец дирректорий тем-же пользователем от имени которого выполняются скрипты, и даже однажды столкнулся с тем что is_dir() не работала уровнями выше скрипта. | |
|
|
|
|
|
|
|
для: Владимир55
(30.12.2008 в 10:40)
| |
Перенося сайты на сервер, я встретился с такой проблемой: очень много папок (сотни
папок с поддиректориями) должны иметь права доступа 777. Делать это вручную - долго и
утомительно. Хотелось бы сделать служебный скриптик, который бы отыскал ВСЕ папки в
корне сайта, и установил бы на них и на вложенные папки права доступа 777.
|
А с помощью какого нибудь клиента не проще? Я беру WinSCP и делаю все права на все вложенные папки и файлы нескольким щелчками мыши. | |
|
|
|
|
|
|
|
для: xx77
(30.12.2008 в 17:22)
| | В исходной формулировке вопроса самой последней строкой я привел выражение
DirDelete("kniga"); // Здесь имя удаляемой директории. Удаляется вместе с папками и файлами!
|
определяющее директорию, с которой начинается обработка.
В моем случае - это корень сайта.
Не могли бы Вы подсказать, как пишется выражение для корня сайта? | |
|
|
|
|
|
|
|
для: Владимир55
(30.12.2008 в 16:41)
| | сделайте другими функциями
<?php
$time=0;
function g_t($bool=false){ //время
global $time;
list($m, $s) = sscanf(microtime(), '%f %u');
if($bool) printf("%.7f", (($m += $s) - $time));
else $time=$m + $s;
}
set_time_limit(0);
ini_set('max_execution_time', 0);
g_t();
function xxxxxx($dir) {
$dh = opendir( $dir );
while($file = readdir($dh)) {
if (is_dir($dir . '/' . $file) && $file{0} != '.') {
echo $file . ' - ';
// if (chmod($dir . '/' . $file, 0777)) echo 'ok';
echo '<br>' ."\n";
xxxxxx($dir . '/' . $file);
}
}
}
xxxxxx('.');
g_t(1);
?>
|
| |
|
|
|
|
|
|
|
для: xx77
(30.12.2008 в 14:45)
| | И всё же, как избавить от инвалидности и довести до рабочего состояния вот этот предложенный Loki код:
function rglob($pattern='*', $flags = 0, $path='')
{
$paths=glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT);
$files=glob($path.$pattern, $flags);
foreach ($paths as $path) { $files=array_merge($files,rglob($pattern, $flags, $path)); }
return $files;
}
foreach (rglob($_SERVER['DOCUMENT_ROOT']."*", GLOB_ONLYDIR) as $dir) {chmod($dir, 0777);}
|
| |
|
|
|
|
|
|
|
для: Владимир55
(30.12.2008 в 13:06)
| | Всмысле Warning: Invalid argument supplied for foreach() ?
значит первым параметром foreach оказался не массив, следовательно rglob() как и возможно glob() ничего не вернула.
Если потом в планах есть редактировать файлы вручную через FTP лучше ничего не делать функциями работающими через файловую систему,
или потом будет возможность что-то делать только скриптами (cms вобщем нужна потом).
// если не говорить о ssh
я так думаю | |
|
|
|
|
|
|
|
для: Владимир55
(30.12.2008 в 13:06)
| | . | |
|
|
|
|
|
|
|
для: Loki
(30.12.2008 в 13:16)
| | А если закачать архив, и затем его разъархивировать скриптом.
Это не поможет делу? | |
|
|
|
|
|
|
|
для: Владимир55
(30.12.2008 в 12:37)
| | тогда через консоль | |
|
|
|
|