Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Работа по FTP протоколу на PHP
// This is the directory we want to create
$dir = "newdir";
// This is the URL on the remote server of the
// script that is going to FTP back to us.
$url = "http://ftpenabled.server.com/ftp.php?dir=$dir";
// This just checks if the directory already exists ....
// if it doesn't call our remote script to FTP back to
// us and create it.
// Also check "allow_url_fopen" is enabled.
if(!file_exists("/var/www/html/testdomain/public_html/$dir"))
{
// Now open the URL. The remote script can pass data back to
// us in $var
$fh = fopen($url,"r");
while(!feof($fh))
{
// Just to stop it timing out ... FTP isn't fast!
set_time_limit(10);
$var = fgets($fh, 1024);
print($var);
}
fclose($fh);
}
}
?>
This is the remote file http://ftpenabled.server.com/ftp.php
<?php
// If the server where this file is located
// has the FTP portion of PHP enabled then
// you call just run this function locally.
// Dir is the directory to create
$dir = $HTTP_GET_VARS["dir"];
// These 3 variable you could pass to the
// script within the URL if you wanted -
// bit insecure though
$ftp_ip = "ftp.this.com";
$ftp_username = "username";
$ftp_password = "password";
if($ftp=ftp_connect($ftp_ip))
{
if(ftp_login($ftp,$ftp_username,$ftp_password))
{
// Set to PASV mode
ftp_pasv( $ftp, 1);
// In this example set the current directory to
// public_html
ftp_chdir($ftp,"/public_html/");
// If we cannot set our directory to the new one
// then we create it
if(!ftp_chdir($ftp,$dir))
{
ftp_mkdir($ftp,$dir);
echo("Directory $dir created ok");
}
}
ftp_close($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); //Закрыли поток
.
Прокомментировать/Отблагодарить