Загрузка файлов по FTP с помощью Phing

Владимир | | Phing, PHP, Web разработка.

Предыдущая статья о Phing была немного не полной из-за отсутствия возможности загружать файлы на сервер в автоматическом режиме.

В стандартной комплектации Phing загрузку по FTP не поддерживает (кстати, довольно странно). Но, естественно, писать самостоятельно этот task не придется. Все уже сделано за нас 😉 .

Я нашел два task’а, предназначенных для работы с FTP: FtpUploadTask и FtpDeploy.

Т.к., судя по описанию, возможности и настройки практически идентичны, я расскажу только о первом. К тому же его автор ведет собственный блог (Чудо{вищные} заметки) и написал довольно много интересных статей о Phing.

Прежде чем перейти к описанию, хочу предупредить.

Не ставьте эксперименты на вашем рабочем сервере! Установите локальный FTP (вполне подойдет FileZilla Server (http://filezilla-project.org/)) и тестируйте на нём.

Устанавливаем task.

Качаем файл FtpUploadTask.php и сохраняем его в папку $PHING_DIR$/tasks/ext/ ($PHING_DIR$ — папка в которую установлен Phing).

Объявляем новый task. Для этого в build файл добавляем строку.

<taskdef name="ftpupload" classname="phing.tasks.ext.FtpUploadTask" />

Теперь можно использовать ftpupload для отправки файлов на сервер.

Я приведу пример задачи, которую написал в дополнение к предыдущей статье.

<target name="deploy" depends="copyfiles, gzipjs, minifycss">
	<ftpupload host="host" username="user" password="pass" cleanDir="true" targetDir="/app_folder/">
		<fileset dir="${DEPLOY_DIR}">
		</fileset>
	</ftpupload>
</target>

Здесь мы указали следующие параметры:

1) host — адрес сервера;

2) username – имя пользователя (с правами записи);

3) password – пароль;

4) cleanDir – удаляем все старые файлы;

5) targetDir – папка в которую будет загружено приложение.

Список загружаемых файлов создаем с помощью fileset, т.е. в данном случае мы включили все файлы приложения.

Кроме того, можно задать ещё несколько параметров, например, явно указать порт FTP сервера. Полный список параметров можно посмотреть здесь.

Как видите, Phing – это очень удобный инструмент, особенно если вы нашли все необходимые task'и 😉 . Но, в любом случае, если вы можете написать PHP скрипт, который решает вашу задачу, то переделать его в виде task’а будет совсем не сложно.

До встречи!

P.S. Ещё раз хочу напомнить. Подумайте дважды (лучше трижды), прежде чем запускать ftpupload с параметрами cleanDir="true" targetDir="/". Восстановить файлы будет НЕВОЗМОЖНО.

Интересно почитать:

Маленькие хитрости Google – найдем наших конкурентов в AdSense.