Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > chmod через PHP


Автор: Geser 26.11.2005, 14:24
Откапал я вот такой скрипт.Надо этим скриптом у все файлов и папкок(в том числе и влеженных) поставить атрибут 777. Под себя подправил.
Код

<?php 
$file = 'docs/*.*'; //папка где мой файлы лежат
// Устанавливаем соединение в FTP-сервером 
$conn_id = ftp_connect('ftp.login.jino-net.ru'); 
// Регистрируемся на сервере 
$login_result = ftp_login($conn_id, 'login', 'password'); 
// Устанавливаем права доступа 777 для файла или директории $file 
if (ftp_chmod($conn_id, 0777, $file)) 
{ 
  echo "$file cdmoded successfully to 777\n"; 
} 
else 
{ 
  echo "could not chmod $file\n"; 
} 
// Закрываем FTP-соединение 
ftp_close($conn_id); 
?>

Но выдается ошибка
Цитата
Warning: ftp_chmod() [function.ftp-chmod]: docs/*.*: No such file or directory in /home/users/a/adsl/docs/cmod.php on line 8
could not chmod docs/*.*

Пробовал просто * - результат тот же.
Что я не так делаю7
ЗЫ: бегать в ftp-клиенте по каждой папке или в скрипте забивать их долговато.
С одинчными файлами ессно работает.

Автор: sugee 26.11.2005, 14:45
Код
$file = 'docs/*'

вот так наверное лучше будет
Добавлено @ 14:46
Цитата(Geser @ 26.11.2005, 14:24)
Пробовал просто * - результат тот же.

Извиняюсь, я это сразу не заметил.

Добавлено @ 14:49
Код
$file = 'docs/.*'

Может так получится?

Автор: Mal Hack 26.11.2005, 18:17
А если указать /docs/ просто без звездочек он не поставит?

Автор: Guest 26.11.2005, 19:19
Mal Hack
нет

Автор: Geser 26.11.2005, 19:41
Мне кажется, что надо сначала получить список всех директорий и поддиректории, файлов, а потом уже скармливать чмоду.Пытаюсь этот список получить

Автор: Mal Hack 26.11.2005, 21:01
А если попробовать выполнить CHMOD, как команжу из под ftp_raw (вроде эта функция)

Автор: Geser 26.11.2005, 21:43
Mal Hack
попробовал? не получилось.Пробовал поразному
ftp_raw($conn_id, "SITE CHMOD 0777 /docs/");
ftp_raw($conn_id, "SITE CHMOD 0777 /");
ftp_raw($conn_id, "SITE CHMOD 0777"); //так ftp-клиент пишет

ftp_raw($conn_id, "CHMOD 0777 /docs/");
ftp_raw($conn_id, "CHMOD 0777 /");
ftp_raw($conn_id, "CHMOD 0777");

ftp_raw($conn_id, "CHMOD 0777 -R /docs/");
ftp_raw($conn_id, "CHMOD 0777 -R /");
ftp_raw($conn_id, "CHMOD 0777 -R");

Автор: Mal Hack 27.11.2005, 01:51
А ошибку какую-ть выдает?

Автор: Geser 27.11.2005, 11:07
Mal Hack
Да.Для каждого случая соотвественно.
Array ( [0] => 200 SITE CHMOD command successful )
Array ( [0] => 550 /: Operation not permitted )
Array ( [0] => 500-'SITE CHMOD 0777' not understood [1] => 500 SITE not understood )
Array ( [0] => 500 CHMOD not understood )
Array ( [0] => 500 CHMOD not understood )
Array ( [0] => 500 CHMOD not understood )
Array ( [0] => 500 CHMOD not understood )
Array ( [0] => 500 CHMOD not understood )
Array ( [0] => 500 CHMOD not understood )

Автор: Mal Hack 27.11.2005, 14:29
Цитата(Geser @ 26.11.2005, 21:43)
ftp_raw($conn_id, "SITE CHMOD 0777 /docs/");


Цитата(Geser @ 27.11.2005, 11:07)
Array ( [0] => 200 SITE CHMOD command successful )

выполняется !!!

Автор: Guest 27.11.2005, 15:17
Может оно и выполняется где-то, тока я по фтп потом зашел и посмотрел. Все как было так и осталось.

Автор: Mal Hack 27.11.2005, 15:35
А с другим сервером пробовал работать?

Автор: Geser 27.11.2005, 15:56
Не пробовал. Не на всех сайтах встанет IPB:) Похоже у самой папки docs меняются атрибуты.
Если б это было на локальном компе, то можно было бы заюзать опцию -R, а тут фик так сделаешь.

Автор: Mal Hack 27.11.2005, 16:03
Попробуй на другом хосте каком-ть протестировать, т.к. может это лаги сервера или на сервере блок стоит какой-ть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)