10.3. Протокол FTP
Функции, описанные в этом разделе, позволяют установить соединение с FTP-серверами. FTP - это аббревиатура от File Transfer Protocol (протокол передачи файлов). Если файловые функции позволяют открывать файлы и работать с ними, задавая URL, а не путь в локальной файловой системе, то эти функции работают непосредственно с FTP-протоколом. Они обладают большей степенью управления и позволяют получать каталог находящихся на сервере файлов. FTP-функции были добавлены к арсеналу функций PHP Эндрю Скальски (Andrew Skalski).
FTP-протокол работает в одном из режимов: текстовом или двоичном. В текстовом режиме FTP транслирует окончания строк. Обычно для выбора режима PHP использует константы FTP_ASCII и FTP_IMAGE. Константы FTP_TEXT и FTP_BINARY были добавлены позднее для удобочитаемости.
Несколько новых функций позволяет осуществлять с помощью FTP-протокола незаблокированные передачи, что дает возможность вашему сценарию выполнять свой код при передаче в фоновом режиме.
boolean ftp_cdup(resource ftp)
Функция ftp_cdup изменяет рабочий каталог на каталог верхнего уровня для текущего рабочего каталога.
boolean ftp_chdir(resource ftp, string directory)
Функция ftp_chdir переносит рабочий каталог в заданный каталог.
boolean ftp_chmod(resource ftp, integer mode, string path)
Функция ftp_chmod меняет права доступа удаленного файла.
ftp_close(resource ftp)
Функция ftp_close закрывает FTP-соединение и освобождает связанную с ним память. 
resource ftp_connect(string host, integer port, integer timeout)
Функция ftp_connect (листинг 10.14) открывает FTP-соединение. Аргумент port является необязательным и по умолчанию равен 21. Аргумент timeout является необязательным и по умолчанию равен 90 секундам. Это значение имеет отношение ко всем FTP-операциям соединения.
В случае успешного соединения возвращается ресурс идентификатора FTP, который и будет использоваться в остальных FTP-командах, в противном случае - значение FALSE. После подключения, для того чтобы иметь возможность передавать команды, необходимо зарегистрироваться.

Листинг 9.14. Функция ftpconnect

<?php
//подключение к серверу
if(!($ftp = ftp_connect("www.leonatkinson.com"))) {
print("Подключение невозможно!<br>n"); exit();
}
print("Подключен<br>n"),• //регистрация
if(!ftp_login($ftp, "anonymous", "corephp@"))
{
print("Регистрация невозможна!<br>n"); exit();
}
print(" Зарегистрировался^^^"),-
print("Тип системы: " . ftp_systype($ftp) . "<br>n"); print("Тайм-аут: " .
ftp_get_option($ftp, FTP_TIMEOUT_SEC) . " секунд^^^"),-//убедитесь в том, что пассивный режим отключен ftp_pasv($ftp, FALSE);
print(" Рабочий каталог: " . ftp_pwd($ftp) . "<br>n"); print("Список:<br>n");
foreach(ftp_rawlist($ftp, ".") as $line)
{
print("$line<br>n");
}
print("<br>n");
if(!ftp_chdir($ftp, "pub/leon"))
{
print("Невозможно перейти в каталог pub/leon!<br>n");
}
print("Перешли в каталог pub/leon <br>n"); print(" Файлы:^^^"),-
foreach(ftp_nlist($ftp, ".") as $filename)
{
print("$filename<br>n");
}
print("<br>n");
if(!ftp_cdup($ftp))

print("Невозможно перейти в каталог верхнего уровня!<br>n");
}
// закрыть соединение ftp_close($ftp);
?>

boolean ftp_delete(resource ftp, string path)
Функция ftp_delete удаляет файл, находящийся на удаленном сервере. Аргумент link может быть получен с помощью функции ftp_connect. Аргумент path является путем к удаляемому файлу на удаленном сервере. Пример использования приведен в описании функции ftp_put.
boolean ftp_exec(resource ftp, string command)
Функция ftp_exec выполняет команду на удаленном сервере. Большинство серверов не разрешают таких действий.