Введение

Функции этого модуля обеспечивают доступ к серверам по протоколу FTP (File Transfer Protocol), определенному в http://www.faqs.org/rfcs/rfc959. Модуль позволяет выполнять множество довольно сложных операций. Если требуется лишь прочитать или записать файл на сервере FTP, можно воспользоваться ftp:// ссылками и функциями для работы с файловой системой, которые более просты в использовании.

Эти функции всегда доступны.

Для использования FTP функций, вы должны указать директиву --enable-ftp во время установки PHP 4 или --with-ftp при использовании PHP 3.

Версия PHP для Windows имеет встроенную поддержку данного расширения. Это означает, что для использования данных функций не требуется загрузка никаких дополнительных расширений.

Настройка во время выполнения

Данное расширение не определяет никакие директивы конфигурации в php.ini.

Этот модуль использует один тип ресурса - идентификатор соединения с FTP сервером, возвращаемый функцией ftp_connect() или ftp_ssl_connect().

Пример использования функций FTP

<?php
// установка соединения
$conn_id = ftp_connect($ftp_server);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// проверка соединения
if ((!$conn_id) || (!$login_result)) {
echo "Не удалось установить соединение с FTP сервером!";
echo "Попытка подключения к серверу $ftp_server под именем $ftp_user_name!";
exit;
} else {
echo "Установлено соединение с FTP сервером $ftp_server под именем $ftp_user_name";
}

// закачивание файла
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

// проверка результата
if (!$upload) {
echo "Не удалось закачать файл!";
} else {
echo "Файл $source_file закачен на $ftp_server под именем $destination_file";
}

// закрытие соединения
ftp_close($conn_id);
?>

Предопределенные константы

Перечисленные ниже константы определены данным расширением и могут быть доступны только в том случае, если PHP был собран с поддержкой этого расширения или же в том случае, если данное расширение подгружается во время выполнения.

FTP_ASCII (integer)
FTP_TEXT (integer)
FTP_BINARY (integer)
FTP_IMAGE (integer)
FTP_TIMEOUT_SEC (integer) - Дополнительная информация доступна в описании функции ftp_set_option().

Следующие константы появились в PHP 4.3.0.

FTP_AUTOSEEK (integer) - Дополнительная информация доступна в описании функции ftp_set_option().
FTP_AUTORESUME (integer) - Автоматически определять позицию в файле, с которой начинается докачка при использовании команд GET и PUT (имеет смысл только совместно с FTP_AUTOSEEK)
FTP_FAILED (integer) - Асинхронная операция завершилась неудачно
FTP_FINISHED (integer) - Асинхронная операция окончена
FTP_MOREDATA (integer) - Асинхронная операция еще не завершена

ftp_nb_continue()

Продолжает асинхронную операцию (PHP 4 >= 4.3.0, PHP 5)

Описание:

int ftp_nb_continue ( resource ftp_stream )

Продолжает отправку или получение файла в асинхронном режиме.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером

Возвращаемые значения

Возвращает FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.

Пример. Пример использования ftp_nb_continue()

<?php

// Начало скачивания
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {

// продолжение скачивания ...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "При скачивании файла произолшла ошибка...";
exit(1);
}
?>

ftp_nb_fput()

Загружает предварительно открытый файл на FTP сервер в асинхронном режиме (PHP 4 >= 4.3.0, PHP 5)

Описание:

int ftp_nb_fput ( resource ftp_stream, string remote_file, resource handle, int mode [, int startpos] )

ftp_nb_fput() закачивает данные из дескриптора файла в удалённый файл на FTP сервере.

Разница между это функцией и ftp_fput() заключается в том, что эта функция получает файл асинхронно, так что ваша программа может совершать другие операции, пока файл закачивается.

ftp_stream - Идентификатор соединения с FTP сервером
remote_file - Путь к удалённому файлу.
handle - Открытый файловый дескриптор локального файла. Чтение прекращается при достижении конца файла.
mode - Режим передачи. Должен быть либо FTP_ASCII, либо FTP_BINARY.
startpos - Возвращаемые значения

Возвращает FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.

Пример. Пример использования ftp_nb_fput()

<?php

$file = 'index.php';

$fp = fopen($file, 'r');

$conn_id = ftp_connect($ftp_server);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Начало закачивания
$ret = ftp_nb_fput($conn_id, $file, $fp, FTP_BINARY);
while ($ret == FTP_MOREDATA) {

// производим какие-то дествия ...
echo ".";

// продолжение закачивания ...
$ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
echo "При закачивании файла произолшла ошибка...";
exit(1);
}

fclose($fp);
?>

ftp_nb_fget()

Загружает предварительно открытый файл на FTP сервер в асинхронном режиме (PHP 4 >= 4.3.0, PHP 5)

Описание:

int ftp_nb_fput ( resource ftp_stream, string remote_file, resource handle, int mode [, int startpos] )

ftp_nb_fput() закачивает данные из дескриптора файла в удалённый файл на FTP сервере.

Разница между это функцией и ftp_fput() заключается в том, что эта функция получает файл асинхронно, так что ваша программа может совершать другие операции, пока файл закачивается.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
remote_file - Путь к удалённому файлу.
handle - Открытый файловый дескриптор локального файла. Чтение прекращается при достижении конца файла.
mode - Режим передачи. Должен быть либо FTP_ASCII, либо FTP_BINARY.
startpos - Возвращаемые значения

Возвращает FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.

Пример. Пример использования ftp_nb_fput()

<?php

$file = 'index.php';

$fp = fopen($file, 'r');

$conn_id = ftp_connect($ftp_server);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Начало закачивания
$ret = ftp_nb_fput($conn_id, $file, $fp, FTP_BINARY);
while ($ret == FTP_MOREDATA) {

// производим какие-то дествия ...
echo ".";

// продолжение закачивания ...
$ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
echo "При закачивании файла произолшла ошибка...";
exit(1);
}

fclose($fp);
?>

ftp_nb_get()

Скачивает файл с FTP сервера в асинхронном режиме и сохраняет его в локальный файл (PHP 4 >= 4.3.0, PHP 5)

Описание:

int ftp_nb_get ( resource ftp_stream, string local_file, string remote_file, int mode [, int resumepos] )

ftp_nb_get() скачивает удалённый файл с FTP сервера и сохраняет его в локальный файл.

Разница между это функцией и ftp_get() заключается в том, что эта функция получает файл асинхронно, так что ваша программа может совершать другие операции, пока файл cкачивается.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
local_file - Путь к локальному файлу (файл будет перезаписан, если уже существует).
remote_file - Путь к удалённому файлу.
mode - Режим передачи. Должен быть либо FTP_ASCII, либо FTP_BINARY.
resumepos - Возвращаемые значения

Возвращает FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.

Пример 1. Пример использования ftp_nb_get()

<?php

// Начало скачивания
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {

// производим какие-то дествия ...
echo ".";

// продолжение скачивания ...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "При скачивании файла произолшла ошибка...";
exit(1);
}
?>

Пример 2. Возобновление скачивания файла с помощью ftp_nb_get()

<?php

// Начало скачивания
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY,
filesize("test"));
// ИЛИ: $ret = ftp_nb_get($my_connection, "test", "README",
// FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {

// производим какие-то дествия ...
echo ".";

// продолжение скачивания ...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "При скачивании файла произолшла ошибка...";
exit(1);
}
?>

Пример 3. Скачивание файла начиная с позиции 100 в новый файл с помощью ftp_nb_get()

<?php

// Запрет FTP_AUTOSEEK
ftp_set_option($my_connection, FTP_AUTOSEEK, false);

// Начало скачивания
$ret = ftp_nb_get($my_connection, "newfile", "README", FTP_BINARY, 100);
while ($ret == FTP_MOREDATA) {

/* ... */

// продолжение скачивания ...
$ret = ftp_nb_continue($my_connection);
}
?>

В последнем примере, "newfile" будет на 100 байт меньше, чем "README" на FTP сервере, потому что скачивание начинается со смещения 100. Если не запретить FTP_AUTOSEEK, первые 100 байт файла "newfile" будут содержать '\0'.

ftp_nb_put()

Загружает файл на FTP сервер в асинхронном режиме (PHP 4 >= 4.3.0, PHP 5)

Описание:

int ftp_nb_put ( resource ftp_stream, string remote_file, string local_file, int mode [, int startpos] )

ftp_nb_put() загружает локальный файл на FTP сервер.

Отличие этой функции от ftp_put() состоит в том, что загрузка файла происходит в асинхронном режиме, что позволяет программе выполнять другие операции во время загрузки.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
remote_file - Путь к файлу на сервере
local_file - Путь к локальному файлу
mode - Режим передачи. Может принимать значения FTP_ASCII или FTP_BINARY
startpos - Позиция в файле, с которой начинается загрузка

Возвращаемые значения

Возвращает FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.

Пример использования ftp_nb_put() example

<?php

// Начало загрузки
$ret = ftp_nb_put($my_connection, "test.remote", "test.local", FTP_BINARY);
while ($ret == FTP_MOREDATA) {

// производим какие-то дествия ...
echo ".";

// продолжение загрузки ...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "При загрузке файла произолшла ошибка...";
exit(1);
}
?>

Пример 2. Возобновление загрузки файла с помощью ftp_nb_put()

<?php

// Начало загрузки
$ret = ftp_nb_put($my_connection, "test.remote", "test.local",
FTP_BINARY, ftp_size("test.remote"));
// ИЛИ: $ret = ftp_nb_put($my_connection, "test.remote", "test.local",
// FTP_BINARY, FTP_AUTORESUME);

while ($ret == FTP_MOREDATA) {

// производим какие-то дествия ...
echo ".";

// продолжение загрузки ...
$ret = ftp_nb_continue($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "При загрузке файла произолшла ошибка...";
exit(1);
}
?>

ftp_put()

Загружает файл на FTP сервер (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

bool ftp_put ( resource ftp_stream, string remote_file, string local_file, int mode [, int startpos] )

ftp_put() загружает локальный файл на FTP сервер.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
remote_file - Путь к файлу на FTP сервере
local_file - Путь к локальному файлу
mode - Задает режим передачи. Может принимать значения FTP_ASCII или FTP_BINARY
startpos - Задает позицию в файле, с которой начинается загрузка

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_put()

<?php
$file = 'somefile.txt';
$remote_file = 'readme.txt';

// установка соединения
$conn_id = ftp_connect($ftp_server);

// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// загрузка файла
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "$file загружен на сервер\n";
} else {
echo "Не удалось загрузить $file на сервер\n";
}

// закрытие соединения
ftp_close($conn_id);
?>

ftp_alloc()

Резервирует место на диске для закачиваемого файла (PHP 5)

Описание:

bool ftp_alloc ( resource ftp_stream, int filesize [, string &result] )

Посылает команду ALLO FTP серверу для резервирования места под отгружаемый файл.

Замечание: Многие FTP серверы не поддерживают эту команду. Такие серверы возвращают код неудачи (FALSE), что означает отсутствие поддержки этой команды, или код успешного выполнения (TRUE), означающий, что в резервировании нет необходимости и клиенту следует продолжать, будто операция была выполнена успешно. По этой причине эту функцию следует использовать с серверами, которые требуют обязательного резервирования.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
filezise - Количество байтов для резервирования.
result - Текстовое представление ответа сервера будет возвращено по ссылке в аргумент result, если он указан.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_alloc()

<?php

$file = "/home/user/myfile";

/* соединение с сервером */
$conn_id = ftp_connect('ftp.example.com');
$login_result = ftp_login($conn_id, 'anonymous', 'user@example.com');

if (ftp_alloc($conn_id, filesize($file), $result)) {
echo "Место на сервере успешно зарезервировано. Отправляю $file.\n";
ftp_put($conn_id, '/incomming/myfile', $file, FTP_BINARY);
} else {
echo "Не удалось зарезервировать место на сервере. Ответ сервера: $result\n";
}

ftp_close($conn_id);

?>

ftp_cdup()

Переходит в родительскую директорию (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

bool ftp_cdup ( resource ftp_stream )

Переходит в родительскую директорию.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования функции ftp_cdup()

<?php
// установка соединения
$conn_id = ftp_connect($ftp_server);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// изменение текущей директории на html
ftp_chdir($conn_id, 'html');

echo ftp_pwd($conn_id); // /html

// возврат в родительскую директорию
if (ftp_cdup($conn_id)) {
echo "команда cdup выполнена успешно\n";
} else {
echo "команда cdup завершилась неудачно\n";
}

echo ftp_pwd($conn_id); // /

ftp_close($conn_id);
?>

ftp_chdir()

Изменяет текущую директорию на FTP сервере (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

bool ftp_chdir ( resource ftp_stream, string directory )

Делает текущей директорию, заданную аргументом

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
directory - Целевая директория.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. Если изменение директории завершилось неудачей, PHP вызовет предупреждение.

Пример. Пример использования ftp_chdir()

<?php

// установка соединения
$conn_id = ftp_connect($ftp_server);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// проверка соединения
if ((!$conn_id) || (!$login_result)) {
die("Не удалось подключиться к FTP серверу!");
}

echo "Текущая директория: " . ftp_pwd($conn_id) . "\n";

// попытка сделать somedir текущей
if (ftp_chdir($conn_id, "somedir")) {
echo "Новая текущая директория: " . ftp_pwd($conn_id) . "\n";
} else {
echo "Не удалось сменить директорию\n";
}

// закрытие соединения
ftp_close($conn_id);
?>

ftp_mkdir()

Создаёт директорию (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

string ftp_mkdir ( resource ftp_stream, string directory )

Создает директорию directory на FTP сервере.

ftp_stream - Идентификатор соединения с FTP сервером
directory - Имя создаваемой директории.

Возвращаемые значения

Возвращает имя только что созданной директории в случае успеха или FALSE в противном случае.

Пример. Пример использования ftp_mkdir()

<?php

$dir = 'www';

// установка соединения
$conn_id = ftp_connect($ftp_server);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// попытка создания директории $dir
if (ftp_mkdir($conn_id, $dir)) {
echo "Создана директория $dir\n";
} else {
echo "Не удалось создать директорию $dir\n";
}

// закрытие соединения
ftp_close($conn_id);
?>

ftp_nlist()

Возвращает список файлов в заданной директории (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

array ftp_nlist ( resource ftp_stream, string directory )

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
directory - Имя директории для получения списка файлов. Этот параметр также может включать аргументы, например ftp_nlist($conn_id, "-la /your/dir"); Обратите внимание, что этот параметр не проходит экранирование спецсимволов, так что могут возникнуть проблемы с именами, содержащими пробелы и прочие подобные символы.

Возвращаемые значения

Возвращает массив имён файлов в директории или FALSE при возникновении ошибки.

Пример использования ftp_nlist()

<?php

// установка соединения
$conn_id = ftp_connect($ftp_server);

// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// получить содержимое текущей директории
$contents = ftp_nlist($conn_id, ".");

// вывод $contents
var_dump($contents);

?>

Приведенный выше пример выведет :

array(3) {
[0]=>
string(11) "public_html"
[1]=>
string(10) "public_ftp"
[2]=>
string(3) "www"

ftp_pwd()

Возвращает имя текущей директории (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

string ftp_pwd ( resource ftp_stream )

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером

Возвращаемые значения

Возвращает имя текущей директории, или FALSE при возникновении ошибки.

Пример. Пример использования ftp_pwd()

<?php

// установка соединения
$conn_id = ftp_connect($ftp_server);

// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// смена текущей директории на public_html
ftp_chdir($conn_id, 'public_html');

// вывод имени текущей директории
echo ftp_pwd($conn_id); // /public_html

// закрытие соединения
ftp_close($conn_id);
?>

ftp_rawlist()

Возвращает список файлов в заданной директории (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

array ftp_rawlist ( resource ftp_stream, string directory [, bool recursive] )

ftp_rawlist() отправляет FTP серверу команду LIST и возвращает результат в виде массива.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
directory - Имя директории на сервере
recursive - Если передано значение TRUE, серверу будет отправлена команда LIST -R

Возвращаемые значения

Возвращает массив, каждый элемент которого содержит одну строку ответа сервера. Ответ сервера не интерпретируется. Для определения того, как следует интерпретировать результат, можно использовать результат функции ftp_systype().

Пример. Пример использования ftp_rawlist()

<?php

// установка соединения
$conn_id = ftp_connect($ftp_server);

// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// получение списка файлов директори /
$buff = ftp_rawlist($conn_id, '/');

// закрытие соединения
ftp_close($conn_id);

// вывод буфера
var_dump($buff);
?>

Вывод вышеприведенного примера будет подобен следующему:

array(3) {
[0]=>
string(65) "drwxr-x--- 3 vincent vincent 4096 Jul 12 12:16 public_ftp"
[1]=>
string(66) "drwxr-x--- 15 vincent vincent 4096 Nov 3 21:31 public_html"
[2]=>
string(73) "lrwxrwxrwx 1 vincent vincent 11 Jul 12 12:16 www -> public_html"
}

В версии 4.3.0 добавлен аргумент recursive.

ftp_rmdir()

Удаляет директорию (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

bool ftp_rmdir ( resource ftp_stream, string directory )

Удаляет директорию directory.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
directory - Имя директории. Должен содержать относительный или абсолютный путь к пустой директории

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_rmdir()

<?php

$dir = 'www/';

// установка соединения
$conn_id = ftp_connect($ftp_server);

// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// попытка удаления директории $dir
if (ftp_rmdir($conn_id, $dir)) {
echo "Директория $dir удалена\n";
} else {
echo "Не удалось удалить директорию $dir\n";
}

ftp_close($conn_id);

?>

ftp_chmod()

Устанавливает права доступа к файлу (PHP 5)

Описание:

int ftp_chmod ( resource ftp_stream, int mode, string filename )

Устанавливает права доступа к указанному удалённому файлу в значение mode.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
mode - Новые права доступа, указанные в виде восьмиричного значения.
filename - Удалённый файл.

Возвращаемые значения

Возвращает новые права доступа к файлу в случае успеха или FALSE в случае ошибки.

Пример. Пример использования ftp_chmod()

<?php
$file = 'public_html/index.php';

// установка соединения
$conn_id = ftp_connect($ftp_server);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// попытка изменить права доступа к файлу $file на 644
if (ftp_chmod($conn_id, 0644, $file) !== false) {
echo "Права доступа к файлу $file изменены на 644\n";
} else {
echo "Не удалось изменить права доступа к файлу $file\n";
}

// закрытие соединения
ftp_close($conn_id);
?>

ftp_delete()

Удаляет файл на FTP сервере (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

bool ftp_delete ( resource ftp_stream, string path )

ftp_delete() удаляет файл, заданный аргументом path, с FTP сервера.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
path - Файл, который нужно удалить.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_delete()

<?php
$file = 'public_html/old.txt';

// установка соединения
$conn_id = ftp_connect($ftp_server);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// попытка удалить файл
if (ftp_delete($conn_id, $file)) {
echo "Файл $file удален\n";
} else {
echo "Не удалось удалить $file\n";
}

// закрытие соединения
ftp_close($conn_id);
?>

ftp_fget()

Загружает файл с FTP сервера и сохраняет его в предварительно открытом файле (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

bool ftp_fget ( resource ftp_stream, resource handle, string remote_file, int mode [, int resumepos] )

ftp_fget() загружает файл remote_file с FTP сервера и записывает его в переданный файловый дескриптор.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
handle - Открытый файловый дескриптор, в который будут сохранены данные.
remote_file - Путь к удалённому файлу.
mode - Режим передачи. Должен быть либо FTP_ASCII, либо FTP_BINARY.
resumepos - Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_fget()

<?php

// открыть файл для записи
$remote_file = 'somefile.txt';
$handle = fopen('localfile.txt', 'w');

// установка соединения
$conn_id = ftp_connect($ftp_server);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// попытка скачивания файла
if (ftp_fget($conn_id, $handle, $remote_file, FTP_ASCII, 1)) {
echo "Произведена запись в $file\n";
} else {
echo "Проблема записи в $file\n";
}

// закрытие соединения и локального файла
ftp_close($conn_id);
fclose($handle);
?>

ftp_fput()

Загружает предварительно открытый файл на FTP сервер (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

bool ftp_fput ( resource ftp_stream, string remote_file, resource handle, int mode [, int startpos] )

ftp_fget() отгружает данные из файлового дескриптора в удалённый файл на FTP сервере.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
remote_file - Путь к удалённому файлу.
handle - Открытый файловый дескриптор локального файла. Чтение прекращается при достижении конца файла.
mode - Режим передачи. Должен быть либо FTP_ASCII, либо FTP_BINARY.
startpos - Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_fput()

<?php

// открыть файл для чтения
$file = 'somefile.txt';
$fp = fopen($file, 'r');

// установка соединения
$conn_id = ftp_connect($ftp_server);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// попытка закачивания файла
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
echo "Загружен файл $file\n";
} else {
echo "Проблема закачивания $file\n";
}

// close the connection and the file handler
ftp_close($conn_id);
fclose($fp);

?>

ftp_get()

Загружает файл с FTP сервера (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

bool ftp_get ( resource ftp_stream, string local_file, string remote_file, int mode [, int resumepos] )

ftp_get() загружает файл удалённый файл с FTP сервера и сохраняет его в локальный файл.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
local_file - Путь к локальному файлу (файл будет перезаписан, если уже существует).
remote_file - Путь к удалённому файлу.
mode - Режим передачи. Должен быть либо FTP_ASCII, либо FTP_BINARY.
resumepos - Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_get()

<?php

// объявление переменных
$local_file = 'local.zip';
$server_file = 'server.zip';

// установка соединения
$conn_id = ftp_connect($ftp_server);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// попытка скачать $server_file и сохранить в $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
echo "Произведена запись в $local_file\n";
} else {
echo "Не удалось завершить операцию\n";
}

// закрытие соединения
ftp_close($conn_id);

?>

ftp_mdtm()

Возвращает время последней модификации файла (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

int ftp_mdtm ( resource ftp_stream, string remote_file )

ftp_mdtm() возвращает время последней модификации удалённого файла.

Замечание: Не все серверы поддерживают эту функцию!

Замечание: ftp_mdtm() не работает с директориями.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
remote_file - Файл, время модификации которого надо получить.

Возвращаемые значения

Возвращает время последней модификации виде временной метки Unix или -1 в случае ошибки.

Пример. Пример использования ftp_mdtm()

<?php

$file = 'somefile.txt';

// установка соединения
$conn_id = ftp_connect($ftp_server);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// получение времени модификации файла
$buff = ftp_mdtm($conn_id, $file);

if ($buff != -1) {
// дата последней модификации somefile.txt : March 26 2003 14:16:41.
echo "дата последней модификации $file : " . date("F d Y H:i:s.", $buff);
} else {
echo "Не удалось выполнить mdtime";
}

// закрытие соединения
ftp_close($conn_id);

?>

ftp_nb_fget()

Скачивает файл с FTP сервера в асинхронном режиме и сохраняет его в предварительно открытом файле (PHP 4 >= 4.3.0, PHP 5)

Описание:

int ftp_nb_fget ( resource ftp_stream, resource handle, string remote_file, int mode [, int resumepos] )

ftp_nb_fget() скачивает удалённый файл с FTP сервера.

Разница между этой функцией и ftp_fget() заключается в том, что эта функция получает файл асинхронно, так что ваша программа может совершать другие операции, пока файл скачивается.
Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
handle - Открытый файловый дескриптор для сохранения данных.
remote_file - Путь к удалённому файлу.
mode - Режим передачи. Должен быть либо FTP_ASCII, либо FTP_BINARY.
resumepos - Возвращаемые значения

Возвращает FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.

Пример. Пример использования ftp_nb_fget()

<?php

// открыть файл для записи
$file = 'index.php';
$fp = fopen($file, 'w');

$conn_id = ftp_connect($ftp_server);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Начало скачивания
$ret = ftp_nb_fget($conn_id, $fp, $file, FTP_BINARY);
while ($ret == FTP_MOREDATA) {

// производим какие-то дествия ...
echo ".";

// продолжение скачивания ...
$ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
echo "При скачивании файла произолшла ошибка...";
exit(1);
}

// закрытие файла
fclose($fp);
?>

ftp_rename()

Переименовывает файл на FTP сервере (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

bool ftp_rename ( resource ftp_stream, string oldname, string newname )

ftp_rename() переименовывает файл или директорию на FTP сервере. ftp_rename() переименовывает файл или директорию from в to.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
oldname - Старое имя файла/директории
newname - Новое имя файла/директории

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_rename()

<?php
$old_file = 'somefile.txt.bak';
$new_file = 'somefile.txt';

// установка соединения
$conn_id = ftp_connect($ftp_server);

// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// попытка переименовать $olf_file в $new_file
if (ftp_rename($conn_id, $old_file, $new_file)) {
echo "Файл $old_file переименован в $new_file\n";
} else {
echo "Не удалось переименовать $old_file в $new_file\n";
}

// закрытие соединения
ftp_close($conn_id);
?>

ftp_size()

Возвращает размер файла (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

int ftp_size ( resource ftp_stream, string remote_file )

ftp_size() возвращает размер заданного файла в байтах.

Замечание: Не все FTP серверы поддерживают эту возможность.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
remote_file - Имя файла на сервере

Возвращаемые значения

Возвращает размер файла, или -1 при возникновении ошибки.

Пример использования ftp_size()

<?php

$file = 'somefile.txt';

// установка соединения
$conn_id = ftp_connect($ftp_server);

// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// получение размера файла $file
$res = ftp_size($conn_id, $file);

if ($res != -1) {
echo "Рамер файла $file $res байт";
} else {
echo "Не удалось определить размер файла $file";
}

// закрытие соединения
ftp_close($conn_id);

?>

ftp_close()

Закрывает соединение с FTP сервером (PHP 4 >= 4.2.0, PHP 5)

Описание:

bool ftp_close ( resource ftp_stream )

ftp_close() закрывает указанный идентификатор соединения с сервером и освобождает resource.

Замечание: После вызова этой функции, соединение больше не может быть использовано, и при необходимости должно быть установлено заново при помощи функции ftp_connect().

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_close()

<?php

// установка соединения
$conn_id = ftp_connect($ftp_server);

// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// вывод текущей директории
echo ftp_pwd($conn_id); // /

// закрытие соединения
ftp_close($conn_id);
?>

ftp_connect()

Устанавливает соединение с FTP сервером (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

resource ftp_connect ( string host [, int port [, int timeout]] )

ftp_connect() устанавливает FTP соединение с указанным сервером host.

Список параметров

host - Адрес FTP сервера. Этот аргумент не должен содержать слешей в конце и префикса ftp:// в начале.
port - Этот аргумент указывает альтернативный порт для подключения. Если он опущен или установлен в ноль, то будет использован FTP порт по умолчанию - 21.
timeout - Этот аргумент указывает таймаут для всех последующих сетевых операций. Если опущен, используется значение по умолчанию, равное 90 секундам. Таймаут может быть изменён и получен в любой момент при помощи функций ftp_set_option() и ftp_get_option() соответственно.

Возвращаемые значения

Возвращает поток FTP в случае успешного выполнение или FALSE в случае ошибки.

Пример. Пример использования ftp_connect()

<?php

$ftp_server = "ftp.example.com";

// установить соединение или выйти
$conn_id = ftp_connect($ftp_server) or die("Не удалось установить соединение с $ftp_server");

?>

ftp_get_option()

Получает текущие параметры FTP соединения (PHP 4 >= 4.2.0, PHP 5)

Описание:

mixed ftp_get_option ( resource ftp_stream, int option )

Эта функция возвращает значение запрошенной опции option для указанного FTP соединения.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
option - На текущий момент, поддежриваются следующие опции:

Поддерживаемые текущие опции FTP:

FTP_TIMEOUT_SEC Возвращает текущий таймаут, используемый в сетевых операциях.
FTP_AUTOSEEK Возвращает TRUE, если эта опция включена, иначе FALSE.

Возвращаемые значения

Возвращает значение в случае успешного выполнения, или FALSE, если указанная опция option не поддерживается. В последнем случае так же вызывается предупреждение.

Пример. Пример использования ftp_get_option()

<?php
// Получаем таймаут соединения
$timeout = ftp_get_option($conn_id, FTP_TIMEOUT_SEC);
?>

ftp_login()

Выполняет вход на FTP сервер (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

bool ftp_login ( resource ftp_stream, string username, string password )

Выполняет вход на FTP сервер.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
username - Имя пользователя (USER).
password - Пароль (PASS).

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. Если войти на сервер не удалось, PHP вызовет предупреждение.

Пример. Пример использования ftp_login()

<?php

$ftp_server = "ftp.example.com";
$ftp_user = "foo";
$ftp_pass = "bar";

// установить соединение или выйти
$conn_id = ftp_connect($ftp_server) or die("Не удалось установить соединение с $ftp_server");

// попытка входа
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
echo "Произведен вход на $ftp_server под именем $ftp_user\n";
} else {
echo "Не удалось войти под именем $ftp_user\n";
}

// close the connection
ftp_close($conn_id);
?>

ftp_pasv()

Включает или выключает пассивный режим (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

bool ftp_pasv ( resource ftp_stream, bool pasv )

ftp_pasv() включает или выключает пассивный режим. В пассивном передача данных инициируется клиентом, а не сервером.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
pasv - Если TRUE, пассивный режим будет включен, иначе выключен.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_pasv()

<?php
$file = 'somefile.txt';
$remote_file = 'readme.txt';

// установка соединения
$conn_id = ftp_connect($ftp_server);

// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// включение пассивного режима
ftp_pasv($conn_id, true);

// загрузка файла
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "$file загружен на сервер\n";
} else {
echo "Не удалось загрузить $file на сервер\n";
}

// закрытие соединения
ftp_close($conn_id);
?>

ftp_quit()

Псевдоним функции ftp_close() (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание: функция является псевдонимом функции ftp_close().

ftp_set_option()

Устанавливает параметры соединения с FTP сервером (PHP 4 >= 4.2.0, PHP 5)

Описание:

bool ftp_set_option ( resource ftp_stream, int option, mixed value )

Эта функция устанавливает параметры соединения с FTP сервером.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
option - В настоящее время поддерживаются следующие параметры:

Таблица. Поддерживаемые параметры

FTP_TIMEOUT_SEC Устанавливает таймаут сетевых операций, в секундах. Аргумент value должен быть целым, больше 0. По умолчанию таймаут равен 90 секунд.
FTP_AUTOSEEK При установке этого параметра, перед выполнением запросов GET или PUT с параметром resumepos или startpos указатель файла будет установлен на запрошенную позицию. Этот параметр установлен по умолчанию.

value - Назначение этого аргумента зависит от значения параметра option.

Возвращаемые значения

Возвращает TRUE если параметр был установлен; FALSE в противном случае. Если значение аргумента option не поддерживается или значение аргумента value не соответствует значению аргумента option, будет выведено предупреждение.

Пример. Пример использования ftp_set_option()

<?php
// установка таймаута в 10 секунд
ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 10);
?>

ftp_ssl_connect()

Устанавливает соединение с FTP сервером через SSL (PHP 4 >= 4.3.0, PHP 5)

Описание:

resource ftp_ssl_connect ( string host [, int port [, int timeout]] )

ftp_ssl_connect() устанавливает соединение с FTP сервером, заданным аргументом host, через SSL.

Почему эта функция может быть не определена: Функция ftp_ssl_connect() доступна только если PHP был собран с поддержкой OpenSSL. Под Windows, вам придется собрать PHP самостоятельно для включения поддержки OpenSSL.

Список параметров

host - Имя хоста или IP адрес, без слэшей или ftp://
port - Задает порт, на котором устанавливается соединение. Если равен нулю или опущен, по умолчанию используется стандартный для протокола FTP порт 21
timeout

Задает таймаут для всех операций с этим соединением. По умолчанию таймаут устанавливается в 90 секунд. Получить и установить значение таймаута можно также с помощью функций ftp_get_option() и ftp_set_option()

Возвращаемые значения

Возвращает дескриптор соединения, или FALSE при возникновении ошибки.

Пример. Пример использования функции ftp_ssl_connect()

<?php

// установка соединения
$conn_id = ftp_ssl_connect($ftp_server);

// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

echo ftp_pwd($conn_id); // /

// закрытие соединения
ftp_close($conn_id);
?>

ftp_exec()

Выполняет программу на FTP сервере (PHP 4 >= 4.0.3, PHP 5)

Описание:

bool ftp_exec ( resource ftp_stream, string command )

Посылает команду SITE EXEC command на FTP сервер.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
command - Команда для выполнения.

Возвращаемые значения

Возвращает TRUE в случае успешного выполнения команды (сервер отправляет код ответа: 200); в противном случае возвращает FALSE.

Пример. Пример использования ftp_exec()

<?php
$command = 'ls -al >files.txt';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_exec($conn_id, $command))
{
echo "Команда $command выполнена успешно<br />\n";
}
else
{
echo 'Не удалось выполнить ' . $command;
}
?>

ftp_site()

Отправляет команду SITE серверу (PHP 3 >= 3.0.15, PHP 4, PHP 5)

Описание:

bool ftp_site ( resource ftp_stream, string command )

ftp_site() отправляет команду, заданную аргументом command, FTP серверу.

Команда SITE не стандартизирована, и зависит от FTP сервера. Она может быть полезна для изменения прав доступа к файлам или смены владельца или группы.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
command - Команда SITE. Обратите внимание, что этот параметр не проходит экранирование спецсимволов, так что могут возникнуть проблемы с именами, содержащими пробелы и прочие подобные символы.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Отправка команды SITE FTP серверу

<?php
/* Соединение с FTP сервером */
$conn = ftp_connect('ftp.example.com');
if (!$conn) die('Не удалось подключиться к ftp.example.com');

/* Вход под именем "user" с паролем "pass" */
if (!ftp_login($conn, 'user', 'pass')) die('Не удалось войти на ftp.example.com');

/* Отправка "SITE CHMOD 0600 /home/user/privatefile" FTP серверу */
if (ftp_site($conn, 'CHMOD 0600 /home/user/privatefile')) {
echo "Команда выполнена.\n";
} else {
die('Команда не выполнена.');
}
?>

ftp_systype()

Возвращает тип операционной системы FTP сервера (PHP 3 >= 3.0.13, PHP 4, PHP 5)

Описание:

string ftp_systype ( resource ftp_stream )

Возвращает тип операционной системы FTP сервера.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером

Возвращаемые значения

Возвращает тип операционной системы FTP сервера, или FALSE при возникновении ошибки.

Пример. Пример использования ftp_systype()

<?php

// установка соединения
$ftp = ftp_connect('ftp.example.com');
ftp_login($ftp, 'user', 'password');

// получение типа системы
if ($type = ftp_systype($ftp)) {
echo "example.com использует $type\n";
} else {
echo "Не удалось определить тип системы";
}

?>

Вышеприведенный пример выведет (например):

example.com использует UNIX

ftp_raw()

Отправляет произвольную команду FTP серверу (PHP 5)

Описание:

array ftp_raw ( resource ftp_stream, string command )

Отправляет произвольную команду command FTP серверу.

Список параметров

ftp_stream - Идентификатор соединения с FTP сервером
command - Команда

Возвращаемые значения

Возвращает ответ сервера в виде массива строк. Функция ftp_raw() не интерпретирует ответ сервера и не определяет, успешно ли выполнена команда.

Пример. Использование ftp_raw() для входа на FTP сервер

<?php
$fp = ftp_connect("ftp.example.com");

/* То же самое, что:
ftp_login($fp, "joeblow", "secret"); */
ftp_raw($fp, "USER joeblow");
ftp_raw($fp, "PASS secret");
?>