Connect ftp with php

Connect ftp with php

For those who dont want to deal with handling the connection once created, here is a simple class that allows you to call any ftp function as if it were an extended method. It automatically puts the ftp connection into the first argument slot (as all ftp functions require).

public function __construct ( $url ) <
$this -> conn = ftp_connect ( $url );
>

public function __call ( $func , $a ) <
if( strstr ( $func , ‘ftp_’ ) !== false && function_exists ( $func )) <
array_unshift ( $a , $this -> conn );
return call_user_func_array ( $func , $a );
>else <
// replace with your own error handler.
die( » $func is not a valid FTP function» );
>
>
>

// Example
$ftp = new ftp ( ‘ftp.example.com’ );
$ftp -> ftp_login ( ‘username’ , ‘password’ );
var_dump ( $ftp -> ftp_nlist ());
?>

Upload file to server via ftp.

$ftp_server = «» ;
$ftp_user_name = «» ;
$ftp_user_pass = «» ;
$file = «» ; //tobe uploaded
$remote_file = «» ;

// set up basic connection
$conn_id = ftp_connect ( $ftp_server );

// login with username and password
$login_result = ftp_login ( $conn_id , $ftp_user_name , $ftp_user_pass );

// upload a file
if ( ftp_put ( $conn_id , $remote_file , $file , FTP_ASCII )) <
echo «successfully uploaded $file \n» ;
exit;
> else <
echo «There was a problem while uploading $file \n» ;
exit;
>
// close the connection
ftp_close ( $conn_id );
?>

In example 2 above you may need to set the system to to use pasv to get a result ie:

$ftp = new ftp(‘ftp.example.com’);
$ftp->ftp_login(‘username’,’password’);
$ftp->ftp_pasv(TRUE);
var_dump($ftp->ftp_nlist());

syntax error in the above example, ftp_nlist requires a directory parameter:

$ftp->ftp_nlist(‘.’); // retrieve contents of current directory

Источник

Работа с FTP средствами PHP

Протокол FTP (File Transfer Protocol — протокол передачи файлов) — один из старейших протоколов Интернета, предназначенный для передачи файлов между двумя хостами.

Как правило, при работе с FTP выполняются следующие стандартные действия:

соединение с удаленным FTP-сервером
регистрация на FTP-сервере
загрузка файлов с сервера или на сервер
закрытие соединения
Соединение с FTP-сервером
Соединение с удаленным FTP-сервером выполняется с помощью функции ftp_connect:

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

В качестве обязательного параметра эта функция принимает имя хоста host, с которым необходимо установить соединение. Второй необязательный параметр port указывает на номер порта, через который осуществляется соединение. Если этот параметр не указан, то соединение осуществляется через порт 21, являющийся стандартным FTP-портом. Третий необязательный параметр определяет максимально время выполнения сценария (тайм-аут) и по умолчанию равен 90 секундам.

Соединение с удаленным FTP-сервером

Регистрация на FTP-сервере
После того, как соединение установлено, необходимо зарегистрироваться на сервере с определенным именем и паролем. Сделать это можно при помощи функции ftp_login.

Как видно из листинга, функция ftp_login принимает три параметра: дескриптор FTP-соединения, возвращаемый функцией ftp_connect, имя пользователя и пароль.

Замечание: Регистрация на сервере не требуется, если FTP-сервер является анонимным.

Закрытие соединения
По окончании сеанса связи с FTP-сервером, нужно закрыть FTP-соединение с помощью функции ftp_quit, принимающей в качестве единственного параметра дескриптор FTP-соединения:

Загрузка файлов с сервера
Загрузка файлов с сервера осуществляется при помощи функции ftp_get:

bool ftp_get(int ftp_connect, string local_file, string remote_file, int mode);

Аргумент mode, задающий режим пересылки файлов, должен быть указан как константа FTP_BINARY или FTP_ASCII. Режим FTP_ASCII используется для пересылки файлов, состоящих только из ASCII-символов (т. е. текстовых файлов), а двоичный режим — для пересылки всех остальных файлов.

Переход в родительский каталог
Изменение текущего рабочего каталога на родительский производится с помощью функции ftp_cdup:

bool ftp_cdup(int ftp_connect);
 $result = ftp_login($connect, $user, $password); if($result) < // сохраняем имя текущего рабочего каталога $current_dir = ftp_pwd($connect); // переходим в родительский каталог ftp_cdup($connect); // сохраняем имя нового каталога $new_dir = ftp_pwd($connect); >else < ftp_quit($connect); exit(); >// Закрываем соединение ftp_quit($connect); ?>

Изменение текущего рабочего каталога
Изменение текущего рабочего каталога на указанный осуществляется при помощи функции ftp_chdir:

Как видно из этого листинга, функция ftp_chdir имеет два параметра: дескриптор соединения $connect и имя нового каталога $new_dir.

Удаление файлов
Удалить файл с FTP-сервера можно с помощью функции ftp_delete:

bool ftp_delete(int ftp_connect, string remote_file);

Здесь ftp_connect — дескриптор соединения, а remote_file — имя удаляемого файла.

Создание каталога
Новый каталог можно создать, используя функцию ftp_mkdir:

string ftp_mkdir(int ftp_connect, string directory);

Эта функция возвращает имя созданного каталога или false в случае неудачи:

Перечисление файлов в каталоге
Узнать, какие файлы находятся в текущем каталоге, можно применив функцию ftp_nlist:

array ftp_nlist(int ftp_connect, string directory);

Переименование файлов
Переименовать файлы на FTP-сервере осуществляется с помощью функции ftp_rename:

bool ftp_rename(int ftp_connect, string from, string to);

Удаление каталогов
Для удаления каталогов применяется функция ftp_rmdir:

bool ftp_rmdir(int ftp_connect, string directory);

Определение размера файлов
Для определения размера файлов существует функция ftp_size:

int ftp_size(int ftp_connect, string filepath);

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

Посылка команды на сервер
Послать на сервер команду можно с помощью функции ftp_site:

bool ftp_site(int ftp_connect string command);

Эта функция посылает на сервер команду SITE. Как правило, с помощью команд SITE выполняются такие команды операционной системы, как chmod. Список команд SITE, поддерживаемый сервером можно узнать, подключившись к нему и выполнив команду REMOTEHELP. Ниже приведен код, позволяющий изменить права доступа к файлу на удаленном сервере:

Работа через брандмауэр
При работе с FTP-сервером через брандмауэр часто бывает необходимо изменить активный режим, при котором соединение инициируется сервером, на пассивный, при котором соединение инициируется клиентом. Это можно сделать, применив функцию ftp_pasv:

Источник

ftp_ssl_connect

ftp_ssl_connect() устанавливает явное SSL соединение с FTP-сервером, заданным аргументом hostname . Это означает, что ftp_ssl_connect() будет успешным даже если сервер не настроен для SSL-FTP, или его сертификат недействителен. Только когда будет вызвана функция ftp_login() , клиент пошлёт необходимую команду AUTH FTP, так что в указанных случаях ftp_login() завершится ошибкой.

Замечание: Почему эта функция может быть не определена

До PHP 7.0.0 ftp_ssl_connect() была доступна только если PHP был собран с поддержкой OpenSSL; это означает, что в Windows эта функция не была определена в официальных сборках PHP. Чтобы использовать эту функцию под Windows, вам придётся собрать PHP самостоятельно для включения поддержки OpenSSL.

Замечание:

ftp_ssl_connect() не предназначена для использования по протоколу sFTP. Для использования sFTP из PHP смотрите функцию ssh2_sftp() .

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

Адрес FTP-сервера. Этот параметр не должен содержать слеши в конце и префикс ftp:// в начале.

Задаёт порт, на котором устанавливается соединение. Если равен нулю или опущен, по умолчанию используется стандартный для протокола FTP — порт 21.

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

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

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

Список изменений

Примеры

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

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

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

if (! $login_result ) // В этом случае PHP уже выбросил сообщение уровня E_WARNING
die( «can’t login» );
>

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

Смотрите также

Источник

Читайте также:  Изменение цвета текста
Оцените статью