PHP: работа с FTP

Я почти на 100% уверен, что вы уже работали с FTP. Сейчас я поведаю, как работать с ним на уровне языка PHP. Итак, для начала вам необходимо вспомнить, как работать в PHP с обычными файлами: сначала надо открыть файл, выполнить с ним какие-либо действия и, наконец, закрыть его. Причем при записи и чтении файла вы не обойдетесь без помощи функции fopen (если только вы не используете функцию file).

Итак, теперь, собственно, про сам FTP.

Работа с FTP начинается с открытия "потока" (stream) и делается это функцией ftp_connect() (аналогично функции fopen в работе с файлами).

ftp_connect("имя хоста","порт","timeout");

Вместо "имя хоста" пропишите имя сайта, к которому вы хотите подключиться. В параметре "порт" укажите ftp-порт удаленного сервера (обычно "21"), а в "timeout" - на какое время (в секундах) вы хотите открыть соединение. Результат выполнения функции нужно присвоить какой-либо переменной, в нашем примере это переменная $open.

$open = ftp_connect("ftp.server.com", 21, 30);

Для входа по вашему аккаунту на сервере воспользуйтесь функцией ftp_login().

ftp_login($open, "your_username", "your_password");

А лучше это сделать следующим образом:

if (!ftp_login($open, "your_username", "your_password"))
    exit("Не могу соединиться");

Параметр "your_username" должен содержать ваш username для входа, а "your_password" - соответственно, ваш пароль. Переменная $open является идентификатором соединения с ftp узлом, к которому вы подключились с помощью ftp_connect.

Все. Если вышеуказанный код не выдал вам никаких ошибок, значит вы успешно подключились к ftp узлу.

А теперь поговорим о функциях работы с FTP:

Функция ftp_mkdir() создаёт директорию, пример:

ftp_mkdir($open, "test"); //Создали папку "test".

Функция ftp_rmdir удалит папку:

ftp_rmdir($open,"test");  //Удалили созданную нами папку "test".

Переименовать файл можно функцией ftp_rename():

ftp_rename($open,"test.txt","ok_test.txt");

Мы переименовали "test.txt" в "ok_test.txt", вместо "test.txt" может быть любой другой файл.

Просмотреть содержимое вашего каталога можно следующим образом:

$site = ftp_nlist($open,""); $d = 5; for ($i = 0; $i < $d; $i++) echo $site[$i];

Функция ftp_nlist() возвращает один файл из вашего каталога, если вам нужно просмотреть все файлы, то ее следует использовать в цикле, как сделано выше.

Функция ftp_size() возвращает размер файла, либо значение "-1" в случае неудачи:

echo ftp_size($open, "test.txt");

Вам может понадобиться узнать дату последнего изменения файла. Это осуществимо с помощью функции ftp_mdtm (учтите, что время возвращается в UNIX-формате):

$mod = ftp_mdtm($open, "test.txt"); echo $mod;

Заметьте, функция не работает с директориями. Для удаления файла воспользуйтесь функцией ftp_delete(), например:

ftp_delete($open, "test.txt");

Закрывается же соединение функцией ftp_close().

ftp_close($open);

Эта функция аналогична функции fclose() при работе с файлами, в нашем примере идентификатор соединения находится в переменной "$open". Теперь просто фрагмент бессмысленного кода:

ftp_connect("ftp.hot.ee", "21", "100");
if (!ftp_login($open, "prosto_user", "ahahaha"))
    exit("Не могу соединиться");
mkdir($open, "test"); // Создали директорию
rmdir($open, "test"); // Удалили директорию
rename($open, "test.txt", "test_i_eche_raz_test.txt"); // Переименовали файл
ftp_close($open); // Закрыли поток

Всё, на этом первая глава заканчивается. Здесь дано только представление о возможностях PHP относительно FTP, если, как говорится, руки дойдут, то напишу вторую главу про FTP, в которой расскажу всё более подробно.