Втыкайте! Работаем с ftp черз PHP.
Основные команды
Команда подключения к ftp серверу
$id=ftp_connect (”host”[,"port"[,"timeout"]]);
port - порт ftp по умолчанию равен 21.
timeout - на какое время собираемся открывать соединение. По умолчанию 90 секунд.
$id - тут хранится идентификатор соединения
Пример:
$ftpserv=’ftp.example.com’;
$id = ftp_connect($ftpserv) or die(”Не удалось установить соединение с $ftpserv”);
Команда входа (login)
$res=ftp_login($id, “user”, “pass”);
Первым параметром идет идентификатор открытого соединения.
user - ва? юзернейм
pass - пароль
В $res окажется TRUE в случае успеха и FALSE в случае неудачи.
Примеры:
1. if(!ftp_login($id, “user”, “pass”)) exit(’не подключился’);
Произойдет автоматическое завер?ение скрипта
2. if(@ftp_login($id, “user”, “pass”))
@ - блокирует вывод на экран сообщения об о?ибке подключения
Завер?ение соединения
ftp_close($id);
$id - идентификатор.
Возвращает TRUE в случае успе?ного завер?ения или FALSE в случае возникновения о?ибки.
ftp_quit - псевдоним ftp_close.
Выполняет команду на ftp сервере
ftp_exec($id, ‘command’);
$id - соединение
command - ва?а команда
Реально - по?лет на сервер вот такую ?туку: SITE EXEC command. Так что если знаете обычные ftp команды, то этой ?тукой можно заменить все, что предлагает PHP.
Вернет TRUE или FALSE. Причем TRUE отдаст, если сервер вернет код ответа 200 (типа все гут).
ftp_site($id, ‘command’);
По синтаксису абсолютно тоже что ftp_exec, только вместо SITE EXEC отправит SITE.
ftp_raw($id, ‘command’);
По синтаксису абсолютно тоже что ftp_exec, только выполнит совсем произвольную команду.
Работа с директориями
Команда получения имени текущей директории
$dirname=ftp_pwd($id);
$id - тут надо отправить идентификатор соединения
В $dirname окажется либо название текущей директории, либо FALSE если команда не пройдет
Команда смены текущей директории
ftp_chdir($id, ‘new_dir’);
$id - соединение
new_dir - название желаемой директории
Вернет TRUE или FALSE понятно в каких случаях.
Команда перехода в родительскую директорию
ftp_cdup($id);
$id - идентификатор
По сути дела является сокращенной командой ftp_chdir. Вернет TRUE в случае успе?ного выполнения и FALSE в случае неудачи.
Команда создания папки
ftp_mkdir($id,’dirname’);
$id - идентефикатор соединения полученный из ftp_connect
Второй парамет - имя ва?ей папки
В случае успеха вернет имя созданной папки. Если не прокатит то отдаст FALSE
Пример:
if(ftp_mkdir($conn_id, $dir))
Если вернется не FALSE, то выполняем. Если FALSE, то попадем в else
Команда удаления папки
ftp_rmdir($id,’dirname’);
$id - идентефикатор соединения
dirname - имя папки
Возвращает TRUE или FALSE.
Пример: точно также как ftp_mkdir
Команда переименования директории или файла
ftp_rename($id, $oldname, $newname);
$oldname - старое имя
$newname - новое имя
Возвращает TRUE в случае успе?ного завер?ения или FALSE в случае возникновения о?ибки.
Работа с файлами
Загружает файл на сервер
ftp_put ($id, $remote_file, $local_file, $mode [, $startpos]);
$id - идентификатор соединения
$remote_file - путь к файлу на удаленном сервере
$local_file - путь к файлу на локальной ма?ине
$mode - метод передачи: FTP_ASCII или FTP_BINARY (FTP_BINARY - передает файл без изменений)
$startpos - позиция в файле с которой начинается загрузка
Вернет TRUE или FALSE
Пример:
ftp_put($conn_id, ’somefile.txt’, ‘file.txt’, FTP_ASCII);
ftp_fput($id, $remote_file, $hd, $mode [, $startpos]);
$hd - идентификатор файла
То же самое что и ftp_put только для уже открытого файла.
Пример:
$fp = fopen($file, ‘r’);
ftp_fput($conn_id, ’somefile.txt’, $fp, FTP_ASCII);
Есть еще ftp_nb_put и ftp_nb_fput с такими же синтаксисами соответственно. Загрузка файла происходит в асинхронном режиме. То есть можно параллельно выполнять еще какие-нибудь команды. Для них есть команда ftp_nb_continue($id), которая продалжает выполнение операции.
Вернуть могут: FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.
Скачивает файл с сервера
ftp_get($id, $local_file, $remote_file, $mode [, $resumepos]);
ftp_fget($id, $hd, $remote_file, $mode [, $resumepos]);
$id - идентификатор соединения
$local_file - файл на локальной ма?ине
$remote_file - файл на удаленной ма?ине
$mode - метод
$resumepos - позициа в файле
$hd - идентификатор открытого файла на ЛОКАЛЬНОЙ МАШ?НЕ
С ftp_nb_get и ftp_nb_fget тоже самое, что и с put-ами.
Удаление файла
ftp_delete($id, $path);
$path - путь к файлу
Вернет TRUE или FALSE
Получение списка файлов в директории
ftp_nlist($id, $directory);
ftp_rawlist($id, $directory [, $recursive]);
$directory - адрес директории
$recursive - отправит команду LIST -R
Обе вернут массив типа list. В первом случае это будет список файлов. Во втором просто построчные ответы сервера.
Установка прав доступа
ftp_chmod($id, $mode, $filename);
$id - соединение с сервером
$mode - новые права доступа (’0644′ или ‘0777′)
$filename - удаленный файл
Возвращает новые права доступа к файлу в случае успеха или FALSE в случае о?ибки.
Получение размера файла
ftp_size($id, $remote_file);
Возвращает размер файла, или -1 при возникновении о?ибки.
Вот вроде бы и все. Команды во?ли не все, но и этих вполне достаточно. Втыкайте!
Свежие комментарии