Меню Рубрики

Установка php на ftp сервере

Работа с FTP через PHP

Иногда бывает нужно загрузить различные файлы по FTP через PHP. Например, можно подправить какой-нибудь движок, а затем определить все свежие файлы (по дате изменения) и загрузить их обратно на сервер. Таким образом, если движок большой, то не придётся ждать, пока загрузятся все файлы. Но это лишь пример того, как можно использовать FTP через PHP. А теперь давайте разберём, как это делается.

Разберём простой пример по работе с FTP через PHP:

Код хорошо прокомментирован, поэтому, что происходит, думаю, Вы понимаете. Безусловно, это лишь часть функций, самые важные. А с полным списком Вы можете ознакомиться в справочнике.

Не могу сказать, что я очень часто работаю с FTP через PHP, но уметь это необходимо любому разработчику, поэтому и написал эту статью.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 3 ):

    привет,добавил сайт на хостинг,сайт на php.набрал в браузере адрес сайта,вместо сайта вышел html код станицы index.php.в чем здесь проблема?спасибо.

    Так и должен был выйти HTML-код, а если помимо него выводится ещё и PHP, то проверьте: поддерживает ли хостинг PHP.

    А почему XML-файлы передаются в бинарном режиме?

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2020 Русаков Михаил Юрьевич. Все права защищены.

    источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Читайте также:  Установка подогреватель 220в на спринтер

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

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

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

    источник

    Подключиться к другому серверу через FTP с помощью php кода. Часть 1

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

    Итак, обычно, мы используем программы типа FileZilla или WinSCP, чтобы подключаться к нашим сайтам и работать с ними напрямую. Для того, чтобы программно из php подключаться к серверу используется специальные ftp функции.

    Для подключения понадобятся ftp_connect() и ftp_login()

    Синтаксис: ftp_connect (string $host [, int $port = 21 [, int $timeout = 90 ]]) — устанавливает соединение с сервером. Обязателен только $host вашего сервера (у кого-то это ip, у кого-то запись типа: serverXX.hosting.reg.ru). $port — по умолчанию 21 и $timeout — время подключения к серверу, на все последующие операции.

    PS Для подключение по ssl используйте ftp_ssl_connect() — входные данные такие же. Ну а для подключения по SFTP уже библиотеку ssh2_sftp() — и это уже совсем другая история.

    Синтаксис: ftp_login(resource ftp_stream, string username, string password) — подключает нас к FTP серверу. ftp_stream идентификатор соединения, который мы получаем в ftp_connect(), последние два параметра — логин юзера и его пароль.

    Соединимся по FTP к серверу через php:

    $ftp_serv = «ftp.demo.ru»;
    $ftp_user = «nameuser»;
    $ftp_pass = «mypassword»;

    //Установить соединение или выйти
    $conn_ );

    //Вход по FTP
    if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) <
    ftp_pasv($conn_id, true); //включение пассивного режима
    echo «Успешно соединились с $ftp_serv под пользователем $ftp_user
    «;
    >
    else <
    echo «Не удалось cjtlbybnmcz под пользователем $ftp_user
    «;
    >

    //Закрываем соединение
    ftp_close($conn_id);
    ?>

    В этом коде мы сначала указываем данные входа, затем подключаемся к серверу и сохраняем в $conn_id идентификатор соединения (если оно прошло успешно). И в функции ftp_login() используем полученный идентификатор, а также вводим логин и пароль для соединения. Если оно пройдет успешно, то можем работать с сервером из php. Корневой папкой будет считаться та, до куда сделан FTP доступ.

    Обязательно читайте в следующей части про операции создания файлов и папок напрямую из PHP.

    источник

    Как работать с PHP и FTP

    От автора: в этом учебнике нашей целью является создание класса FTP при помощи PHP, хорошо написанного, полезного и расширяемого.

    Краткое описание задачи

    Очень важно сначала кратко и точно описать, какую функциональность должен включать ваш класс. В нашем случае:

    Создание на сервере папки

    Бесплатный курс по PHP программированию

    Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

    В курсе 39 уроков | 15 часов видео | исходники для каждого урока

    Возврат списка директории

    Детали учебника

    Программа: PHP 5+

    Требования: и сервер FTP

    Сложность: средняя

    Примерное время выполнения: 30 минут

    Когда нужно использовать класс FTP?

    Этот вид класса можно применять в нескольких случаях. Парой сценариев могут быть:

    Автоматизирование выгрузки изображений, таких как галерея, на вебсайт клиента (в идеале – в сочетании с моей подсказкой по изменению размера изображения);

    Делайте бэкапы вне сайта, передавая файл бэкапа базы данных со своего сервера на другой. (Примечание: не рекомендуется для секретной информации, потому что FTP – не очень защищенный протокол).

    Примечание: можно легко наткнуться на затруднения при работе с FTP, так как у разных серверов различные конфигурации. Данный код был успешно протестирован на многих серверах FTP.

    Что такое FTP?

    FTP: «Стандартный сетевой протокол, используемый для копирования файла с одного хоста на другой.»

    FTP, или File Transfer Protocol – это, по определению Wikipedia: «Стандартный сетевой протокол, используемый для копирования файла с одного хоста на другой через основанную на TCP/IP сеть, такую, как Интернет.»

    В действительности, он позволяет копировать файл(ы) с одного компьютера на другой.

    Шаг 1 – Подготовка

    Начнем по возможности с самого легкого. В корне своего нового проекта создайте два файла: index.php и ftp_class.php.

    Читайте также:  Установка 2 din магнитолы 2107

    Файл, который создает объект и вызывает необходимые методы — index.php – это наша главная страница. ftp_class.php – это наш класс ftp.

    В следующем шаге мы создадим «скелет» класса. Когда он будет готов, вы сможете пойти далее и попробовать проделать каждый этап.

    Шаг 2 – Устанавливаем класс

    Сильной стороной объектно-ориентированного программирования (Object-Oriented Programming (OOP)) является то, что оно дает сложному коду легкий в использовании интерфейс. Создавая класс — считайте класс шаблоном — вы можете инкапсулировать (герметизировать) данные, что является простым жаргонным словом для термина, относящегося к сокрытию данных. Затем можно опять использовать этот класс снова и снова без нужды в переписывании частей кода. Вместо того вам нужно всего лишь вызывать подходящие методы (термин “method” – это то же самое, что function).

    Давайте начнем создавать свой класс ftp. Откройте файл ftp_class.php и добавьте следующий код. Это основная структура скелета класса, которую я назвал ‘FTPClient‘.

    Функция construct, известная как конструктор, это специальный метод класса, автоматически им вызываемый, когда вы создаете новый объект, или пример класса. Обычно это отличное место, подходящее для добавления инициализации; но для сегодняшней цели она нам не нужна. Тем не менее, мы положим ее здесь для использования на будущее.

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

    Шаг 3 – Переменные класса

    Далее мы установим несколько переменных класса или свойств.

    Префикс «private» определяет область действия переменной. В данном случае это означает, что доступа к переменной извне класса нет ниоткуда.

    Переменная $connectionId будет содержать наш поток соединения. Две других содержат статус и сообщения. $loginOk будет полезна для определения того, правильно ли мы соединены.

    Шаг 4 – Запись простого сообщения

    Почти в каждом методе мы будем вызывать метод с названием ‘logMessage. Это – самый основной обработчик сообщения, который даст нам возможность собирать любые сообщения, созданные нашим классом так, чтобы было можно гарантировать пользователю ответную реакцию.

    Обратите внимание, что мы не делаем return (возврат) настоящих сообщений из своих методов. Вместо того мы возвращаем true или false, основанные на том, была ли успешной отдельная операция. У этого есть свои преимущества, но, кроме того, оно не детализирует пользователю то, что происходит.

    Добавьте два следующих метода, чтобы было можно определить, что прошло успешно.

    Этот метод принимает переменную $message. Содержимое переменной затем сохраняется в массиве класса благодаря строке: $this->messageArray[] = $message;

    Так как $messageArray – переменная класса, мы можем получить к ней доступ через запись $this->.

    Будучи внутри класса, $this относится к самому объекту.

    Чтобы вернуть это сообщение, мы вызываем getMessages.

    Этот метод – открытый. Как уже упоминалось, эти закрытые/открытые дела просто относятся к области действия переменной или, в данном случае, метода. К закрытому методу (или переменной) нельзя получить доступ снаружи класса, в то время, как к открытому методу (или переменной) можно.

    Так как наша переменная закрытая, нам нужен способ получения к ней доступа. Мы делаем это, назначая своему классу метод public, к которому мы имеем затем доступ снаружи класса. Вам, может быть, интересно, почему мы не можем просто сделать messageArray открытой переменной. Можем; просто это не очень хорошо.

    Примечание: в сети полно примеров обработчиков сообщения в полном цвете, или классов, посвященных им. Мы же работаем над простой реализацией цели этого учебника.

    Шаг 5 – Соединение

    На этом этапе мы добавим метод connect. Он позволит нам соединяться с сервером FTP.

    Мы предаем информацию: сервер ($server), имя пользователя ($ftpUser) и пароль ($ftpPassword) для установки соединения.

    Первая строка кода открывает соединение FTP с отдельным сервером при помощи ftp_connect. Мы сохраняем свое соединение в переменную класса, $connectionId, описанную выше.
    Код ftp_login записывает нас в отдельное соединение, передавая наш connection id, имя пользователя и пароль.

    Вы, возможно, заметили строку кода ftp_pasv. Она, как поясняет комментарий, включает и выключает пассивный режим on/off. Я бы советовал оставить его в режиме off, однако, если у вас имеются некоторые проблемы со связью, попробуйте включить его на on. Пассивный режим может вызывать кошмары при соединении через FTP.

    Определяем, было ли соединение успешным. Затем записываем результаты, вызывая метод обработчика простого сообщения logMessage() и передаем в лог строку. Помните: для получения доступа в logMessage() мы пользуемся $this->, так как это переменная класса.

    Шаг 6 – Вызываем объект

    Теперь, когда наш класс работает, мы можем его протестировать! Откройте файл index.php и добавьте следующий код.

    Вам понадобится доступ на сервер FTP. Если хотите установить свой собственный сервер, попробуйте Filezilla – он бесплатный.

    Вы заметите, что я добавил здесь подробности сервера FTP. В идеале они будут храниться в файле config. Измените их на установки своего FTP.

    Читайте также:  Установка козырьков на балкон на последнем этаже

    источник

    Работаем с FTP на уровне PHP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    источник

    Учебник по PHP 4

    Сколько новых сайтов Вы делаете за год? результаты

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

    Предыдущая Следующая

    Основные возможности PHP при работе с FTP

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

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

    • соединение с удаленным FTP-сервером
    • регистрация на FTP-сервере
    • загрузка файлов с сервера или на сервер
    • закрытие соединения

    Соединение с FTP-сервером

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

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

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

    Регистрация на FTP-сервере

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

    Регистрация на FTP-сервере

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

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

    Закрытие соединения

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

    Загрузка файлов с сервера

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

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

    Предыдущая Следующая

    Если Вам нужна частная профессиональная консультация от авторов многих книг Кузнецова М.В. и Симдянова И.В., добро пожаловать в наш Консультационный Центр SoftTime.

    источник

    Добавить комментарий

    Adblock
    detector