Elettracompany.com

Компьютерный справочник
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ftp put php

PHP | функция ftp_put ()

Функция ftp_put () — это встроенная функция в PHP, которая используется для загрузки файлов на FTP-сервер.

Синтаксис:

Параметр: эта функция принимает пять параметров, как указано выше и описано ниже:

  • $ ftp_connection: обязательный параметр. Он указывает уже существующее FTP-соединение, используемое для загрузки файла.
  • $ remote_file_path: обязательный параметр. Он указывает путь на удаленном сервере, т.е. на FTP-сервере, на который загружается файл.
  • $ local_file_path: обязательный параметр. Он указывает путь к файлу, который должен быть загружен на FTP-сервер.
  • $ mode: обязательный параметр. Указывает режим передачи. Значения параметра — либо FTP_ASCII, либо FTP_BINARY.
  • $ start_position: это необязательный параметр. Он указывает позицию в удаленном файле, в которую нужно начать загрузку.

Возвращаемое значение: возвращает True в случае успеха или False в случае неудачи.

Замечания:

  • Эта функция доступна в PHP 4.0.0 и более новой версии.
  • Следующие примеры не могут быть запущены в онлайн-среде IDE. Поэтому попробуйте запустить на каком-нибудь хостинг-сервере PHP или локальном хосте с правильным именем ftp-сервера.

Ниже приведены примеры, иллюстрирующие использование функции ftp_put () в PHP:

Пример 1:

// Подключаемся к FTP серверу

// Использовать правильное имя пользователя ftp

// Использовать правильный пароль FTP, соответствующий
// к имени пользователя ftp

// Имя файла или путь для загрузки на FTP-сервер

// Установка ftp соединения

$ftp_connection = ftp_connect( $ftp_server )

or die ( «Could not connect to $ftp_server» );

echo «Successfully connected to the ftp server!» ;

// Вход в установленное соединение с

// ftp пароль пользователя

$login = ftp_login( $ftp_connection , $ftp_username , $ftp_userpass );

// Проверка успешности входа в систему

echo «
logged in successfully!» ;

if (ftp_put( $ftp_connection ,

«uploadedfile_name_in_server.txt» , $file , FTP_ASCII))

echo «
Uploaded successful $file.» ;

echo «
Error while uploading $file.» ;

echo «
login failed!» ;

if (ftp_close( $ftp_connection )) <

echo «
Connection closed Successfully!» ;

Выход:

Пример 2. Подключитесь к ftp-серверу, используя номер порта 21, а затем загрузите файл.

// Подключаемся к FTP серверу

// Использовать правильное имя пользователя ftp

// Использовать правильный пароль FTP, соответствующий
// к имени пользователя ftp

// Имя файла или путь для загрузки на FTP-сервер

// Установка ftp соединения

$ftp_connection = ftp_connect( $ftp_server , 21)

or die ( «Could not connect to $ftp_server» );

echo «Successfully connected to the ftp server!» ;

// Вход в установленное соединение с

// ftp пароль пользователя

$login = ftp_login( $ftp_connection ,

// Проверка успешности входа в систему

echo «
logged in successfully!» ;

if (ftp_put( $ftp_connection ,

«uploadedfile_name_in_server.txt» , $file , FTP_ASCII))

echo «
Uploaded successful $file.» ;

echo «
Error while uploading $file.» ;

echo «
login failed!» ;

// Эхо ftp_get_option ($ ftp_connection, 1);

if (ftp_close( $ftp_connection )) <

echo «
Connection closed Successfully!» ;

ftp_put

(PHP 4, PHP 5, PHP 7)

ftp_put — Загружает файл на FTP-сервер

Описание

ftp_put() загружает локальный файл на FTP-сервер.

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

Идентификатор соединения с FTP-сервером.

Путь к файлу на FTP-сервере.

Путь к локальному файлу.

Задает режим передачи. Может принимать значения FTP_ASCII или FTP_BINARY .

Задает позицию в удаленном файле, в которую начнется загрузка

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

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

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

Примеры

Пример #1 Пример использования ftp_put()

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

  • ftp_pasv() — Включает или выключает пассивный режим
  • ftp_fput() — Загружает предварительно открытый файл на FTP-сервер
  • ftp_nb_fput() — Загружает предварительно открытый файл на FTP-сервер в асинхронном режиме
  • ftp_nb_put() — Загружает файл на FTP-сервер в асинхронном режиме

User Contributed Notes 32 notes

If when using ftp_put you get the one of the following errors:

Warning: ftp_put() [function.ftp-put]: Opening ASCII mode data connection

Warning: ftp_put() [function.ftp-put]: Opening BINARY mode data connection

and it creates the file in the correct location but is a 0kb file and all FTP commands thereafter fail. It is likely that the client is behind a firewall. To rectify this use:

Before executing any put commands. Took me so long to figure this out I actually cheered when I did 😀

If you want to copy a whole directory tree (with subdiretories),
this function (ftp_copy) might be usefull. Tested with
php 4.2.2 and a Linux OS.

$src_dir = «/from»;
$dst_dir = «/to»;

ftp_copy($src_dir, $dst_dir);
.
ftp_close($conn_id)

if (!@ftp_chdir($conn_id, $dst_dir.»/».$file)) <

ftp_copy($src_dir.»/».$file, $dst_dir.»/».$file);
>
else <

$upload = ftp_put($conn_id, $dst_dir.»/».$file, $src_dir.»/».$file, FTP_BINARY);
>
>
>

If you are having timeouts uploading a file, even very small files, you might have a look at ftp_pasv()

And don’t forget to do it after your ftp_login();

Here is a fix for the function from lucas at rufy dot com below that will recursively put files from a source directory to a destination directory. As written below, it won’t put a file in a directory that already exists, because the the destination is altered. So here is the corrected function that will allow it to work:

The following is a fully tested function (based on a previous note) that recursively puts files from a source directory to a destination directory. See http://rufy.com/tech/archives/000026.html for more information.

NOTE: use full path name for the destination directory and the destination directory must already exist

If you get this error when trying to send data to server :
Warning: ftp_put() [function.ftp-put]: Unable to build data connection: Connection timed out.

Two solutions :
— Add the program httpd.exe in your exception list for external connexions of your firewall. Indeed, the FTP protocol open a new socket for data transfer. And this socket is opened from the server to the client (your computer). This program is located (for WAMP) in C:wampbinapacheApache[version]bin
— Use the ftp_pasv() function to activate the passive mode. In this mode, it is the client who open the new socket to the server.

Got this cryptic error

Warning: ftp_put() [function.ftp-put]: ‘STOR’ not understood in
C:wampwwwkevtestftp_todays.php on line 48

Found the prob, you can’t put a path to the destination file
(even though I can do that in the dos ftp client. )

e.g. — this doesn’t work
ftp_put($conn, ‘/www/site/file.html’,’c:/wamp/www/site/file.html’,FTP_BINARY);

you have to put

I [had an error for which] ftp_pasv didnt solve the problem. Here’s why:

FTP uses 2 connections on different ports, one for connection/handshake and another for data transfer.
The problem was that the ftp-server (that php was connecting to) also used different IP-addresses for the different connections (say what!?).
Normally the firewall (csf) detects ftp-connections and allows them through but because of the different IP-adresses this didn’t work.

Solution:
1 angry mail to the ftp server owner.
Allowing the second IP in the firewall.

if you examine the first user submitted function, ftp_putAll, it will work only if you extract this line and its matching bracket.

if (!@ftp_chdir($conn_id, $dst_dir.»/».$file))

The function will have changed into that directory before having uploaded files to it. This alters your upload path and the system will try to upload into an essentially non-existent directory (duped at the end).

Читать еще:  Логарифмический масштаб matlab

Hope this helps some of you.
Cheers.
Saeven

I had a little trouble getting the ftp_put to work, because of that particular server. All variables and data parsed from the previous web form had to be retreived using $_POST, $_GET or $_FILES.

If you don’t know what you sent use phpinfo(); to display what the server thinks about your data.

so. when sending files using a form and PHP, make sure that all the data (text files etc. ) are retreived with $_POST, and files (smiley.png, compression.zip, etc. ) are retreived with $_FILES.

here’s what your start of a results.php file might look like:

Now when it comes to transmitting that information.

hope this is usefull ^_^

If you are moving files from one folder to another inside the same server, the «local file» field has to be indicated in a relative path according to the location of the script running the ftp_put() function.

For example, your function is running on: /public_html/do_ftp.php and you want to move /public_html/products.php to /public_html/backup/products.php

The correct way to build the function would be:

ftp_put($ftp_id, ‘/public_html/backup/products.php’, ‘products.php’, FTP_ASCII);

After having headaches for 2 days trying to make this function work using absolute paths in both fields, I finally found the right way to use it. I hope it helps someone. Excuse my english, it isn’t my native language.

In case you aren’t aware. Some web hosting services do NOT allow outbound ftp unless you have a dedicated server account. A «shared» hosting account often doesn’t have this capability.

So if you can’t get your ftp, curl, or ssh remote file transfer functions to work, check with the host service and ask. You may have to upgrade your account.

I’ve seen two notes about a «ftp_copy» function but i think there’s a misinterpretation about what an «ftp_copy» function should do. For me , it should be something like an ftp_rename that would keep the orginal file and clone it somewhere else on the same ftp server, as for them they consider its purpose is to copy a local file to a distant ftp ..well .. as in FTP protocol there’s no such thing as an FTP COPY command anyway, i think you’re free to interpret it as you want.
So here’s my solution using ftp_put and ftp_get ..

Currently, there is no function that lets you specifiy the file’s contents as a string. However, there is ftp_fput(), which operates on an open file. Using this function in conjunction with tmpfile() lets you emulate this kind of function. (You could also use php://memory, but this breaks BC).

This is an extremely trivial thing but one that had me stumped forever (well, until I decided to check the error logs and see the error). I had a large file (mysql backup of a huge forum) that was only partially being uploaded to a remote backup server. Couldn’t figure out why, until I realized that the max execution time was being hit since it was taking longer than 30 seconds to upload this file.

That did the trick. It’s one of those dumb, trivial things, and if you’re having trouble like I, it may be something you overlooked.

ftp_put() can display confusing warning messages as it returns one line of the remote server’s response which may be multi lined.

If you’re transferring large amounts of files note that some file systems only support up to 2000 files per directory. This had me stumped for a while.

I spent some time debugging a silly problem:

In php >= 5, ftp_put() will apparently rewind to the start of the file regardless of the state you left it in before sending it to the $host.

I found this out because I wasn’t closing the file handle before using ftp_put(). Since I had just written to the file, the file pointer must have been located at the *bottom*.

I was sending a 0-byte file on php 4.2.2., but worked fine on php 5.

So, just a heads up, don’t forget to close those filehandles. Even though I was using the filename as the argument for ftp_put, it still needs to be closed.

I did not call rewind on the file handle, just fclose($file_h).

victor at nobel dot com dot br wrote that
the correct dirpath format excluded «/home/USER/» from the public path, but for my server, i had to use it in order to get my scripts to work.

it may be obvious to most but I’m positing that you cannot use the $_SERVER[‘DOCUMENT_ROOT’] path since FTP starts at your top-level and therefore bypasses (or just plain doesn’t recognize) most of the virtual server pathing.

Ftp put php

Продолжает асинхронную операцию (PHP 4 >= 4.3.0, PHP 5)

Продолжает отправку или получение файла в асинхронном режиме.

ftp_stream — Идентификатор соединения с FTP сервером

Возвращает FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.

Пример. Пример использования ftp_nb_continue()

Загружает предварительно открытый файл на FTP сервер в асинхронном режиме (PHP 4 >= 4.3.0, PHP 5)

ftp_nb_fput() закачивает данные из дескриптора файла в удалённый файл на FTP сервере.

Разница между это функцией и ftp_fput() заключается в том, что эта функция получает файл асинхронно, так что ваша программа может совершать другие операции, пока файл закачивается.

ftp_stream — Идентификатор соединения с FTP сервером
remote_file — Путь к удалённому файлу.
handle — Открытый файловый дескриптор локального файла. Чтение прекращается при достижении конца файла.
mode — Режим передачи. Должен быть либо FTP_ASCII, либо FTP_BINARY.
startpos — Возвращаемые значения

Возвращает FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.

Пример. Пример использования ftp_nb_fput()

Загружает предварительно открытый файл на FTP сервер в асинхронном режиме (PHP 4 >= 4.3.0, PHP 5)

ftp_nb_fput() закачивает данные из дескриптора файла в удалённый файл на FTP сервере.

Разница между это функцией и ftp_fput() заключается в том, что эта функция получает файл асинхронно, так что ваша программа может совершать другие операции, пока файл закачивается.

ftp_stream — Идентификатор соединения с FTP сервером
remote_file — Путь к удалённому файлу.
handle — Открытый файловый дескриптор локального файла. Чтение прекращается при достижении конца файла.
mode — Режим передачи. Должен быть либо FTP_ASCII, либо FTP_BINARY.
startpos — Возвращаемые значения

Возвращает FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.

Пример. Пример использования ftp_nb_fput()

Скачивает файл с FTP сервера в асинхронном режиме и сохраняет его в локальный файл (PHP 4 >= 4.3.0, PHP 5)

Читать еще:  Php socket connect

ftp_nb_get() скачивает удалённый файл с FTP сервера и сохраняет его в локальный файл.

Разница между это функцией и ftp_get() заключается в том, что эта функция получает файл асинхронно, так что ваша программа может совершать другие операции, пока файл cкачивается.

ftp_stream — Идентификатор соединения с FTP сервером
local_file — Путь к локальному файлу (файл будет перезаписан, если уже существует).
remote_file — Путь к удалённому файлу.
mode — Режим передачи. Должен быть либо FTP_ASCII, либо FTP_BINARY.
resumepos — Возвращаемые значения

Возвращает FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.

Пример 1. Пример использования ftp_nb_get()

Пример 2. Возобновление скачивания файла с помощью ftp_nb_get()

Пример 3. Скачивание файла начиная с позиции 100 в новый файл с помощью ftp_nb_get()

В последнем примере, «newfile» будет на 100 байт меньше, чем «README» на FTP сервере, потому что скачивание начинается со смещения 100. Если не запретить FTP_AUTOSEEK, первые 100 байт файла «newfile» будут содержать ‘’.

Загружает файл на FTP сервер в асинхронном режиме (PHP 4 >= 4.3.0, PHP 5)

ftp_nb_put() загружает локальный файл на FTP сервер.

Отличие этой функции от ftp_put() состоит в том, что загрузка файла происходит в асинхронном режиме, что позволяет программе выполнять другие операции во время загрузки.

ftp_stream — Идентификатор соединения с FTP сервером
remote_file — Путь к файлу на сервере
local_file — Путь к локальному файлу
mode — Режим передачи. Может принимать значения FTP_ASCII или FTP_BINARY
startpos — Позиция в файле, с которой начинается загрузка

Возвращает FTP_FAILED, FTP_FINISHED или FTP_MOREDATA.

Пример использования ftp_nb_put() example

Пример 2. Возобновление загрузки файла с помощью ftp_nb_put()

Загружает файл на FTP сервер (PHP 3 >= 3.0.13, PHP 4, PHP 5)

ftp_put() загружает локальный файл на FTP сервер.

ftp_stream — Идентификатор соединения с FTP сервером
remote_file — Путь к файлу на FTP сервере
local_file — Путь к локальному файлу
mode — Задает режим передачи. Может принимать значения FTP_ASCII или FTP_BINARY
startpos — Задает позицию в файле, с которой начинается загрузка

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_put()

Резервирует место на диске для закачиваемого файла (PHP 5)

Посылает команду ALLO FTP серверу для резервирования места под отгружаемый файл.

Замечание: Многие FTP серверы не поддерживают эту команду. Такие серверы возвращают код неудачи (FALSE), что означает отсутствие поддержки этой команды, или код успешного выполнения (TRUE), означающий, что в резервировании нет необходимости и клиенту следует продолжать, будто операция была выполнена успешно. По этой причине эту функцию следует использовать с серверами, которые требуют обязательного резервирования.

ftp_stream — Идентификатор соединения с FTP сервером
filezise — Количество байтов для резервирования.
result — Текстовое представление ответа сервера будет возвращено по ссылке в аргумент result, если он указан.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Пример. Пример использования ftp_alloc()

[SHELL]Работа с FTP

# Устанавливаем дату и время. Требуется, чтобы делать
# архив отправленных файлов, на будущее
day=»‘date +%Y-%m-%d'»

# Данные для подключения по FTP

# IP-адрес или доменное имя хоста
FTPHOST=’1.2.3.4′

# Пароль FTP
PASS=’password’

# Удалённый каталог, в который будем пересылать файл
REMOTEDIR=»/Catalog1/Catalog2″

# Локальный каталог откуда будем копировать файлы
LOCALDIR=»/samba/public/UPLOAD»

# Собственно, поехали
# Входим в локальный каталог, откуда будем копировать файлы
cd $LOCALDIR

# Создаём каталог, куда будем класть копии отправленных файлов
# Это на ваше усмотрение, надо это или нет
mkdir /samba/public/ARCHIVE/UPLOAD/$day

# Копируем в созданную нами директорию, текущего дня.
# Здесь правда есть подводные камни. Будьте внимательны, чтобы
# Данная процедура не пришлась на 23-59
cp * /samba/public/ARCHIVE/UPLOAD/$day

# Здесь начинается подключение к FTP-серверу
# Должно быть понятно, согласно описанию ниже
ftp -n $FTPHOST

* — это означает выбрать в каталоге абсолютно всё, иначе надо писать маски файлов.

Что делает этот скрипт? Пробежавшись по тексу, могу сказать, что должно быть понятно и так. Посмотрите определённые переменные? Ведь всё до безобразия понятно и просто. Смысл данного скрипта, чтобы его запустить, он работал и самое главное — чтобы после того, как вы поменяете место работы, ваш преемник смог в нём разобраться! 🙂

Самый важные момент в этом скрипте это то, что мы подключаемся к FTP-серверу, и после того как подключились, мы работаем уже не с командами SHELL, а с командами FTP.

Краткий перечень команд FTP:

  • open имя_сервера — открыть соединение. Открывает соединение с сервером. Это имя можно указать сразу при вводе команды, загружающей клиента: ftp ftp.example.ru
  • cd имя_директории — сменить каталог. Осуществляет переход в другой рабочий каталог на FTP-сервере.
  • dir [имя_файла] можно сделать просто dir — выдать список файлов. Выдает список файлов в текущей директории. Не забывайте, что можно использовать шаблоны групповых операций.
  • get имя_файла [имя_локального_файла] — переписать файл. Переписывает файл с удаленного компьютера на локальный. Если указано имя локального файла, то записывает его под этим именем, иначе — в каталог по умолчанию.
  • mget [имя_файла] — переписать группу файлов. То же самое, что и get, но разрешается использовать шаблоны. Перед копированием каждого файла будет запрашиваться подтверждение. Для отмены подтверждений введите prompt.
  • prompt — отменяет подтверждение в командах mget и mput.
  • put имя_файла [имя_удаленного_файла] — записать файл на сервер. Переписывает файл с локального компьютера на удаленный под именем имя_удаленного_файла. Если оно не указано, то файл записывается в текущий каталог с именем локального файла. Команда запрещена для анонимных пользователей.
  • mput [имя_файла] — записать группу файлов. То же самое, что и put, но разрешается использовать шаблоны. Перед записью каждого файла будет запрашиваться подтверждение. Для отмены подтверждений введите prompt.
  • ascii — устанавливает ascii-способ передачи файлов. Используется для пересылки файлов-текстов на английском языке. Однако для надежности лучше использовать binary.
  • binary — устанавливает двоичный способ пересылки файлов. При этом файл при передаче не перекодируется и записывается в неизмененном виде. Это наиболее надежный способ передачи файлов.
  • close — закрывает соединение с данным сервером и производит возврат в командный режим. Эта команда автоматически выполняется при выходе из FTP-клиента.
  • quit — выход из FTP-клиента.
  • user — регистрирует на текущем сервере с новым именем. Используйте эту команду, если Вы первый раз по ошибке неправильно ввели имя анонимного пользователя и не хотите снова перенабирать команду open.
  • lcd [имя_директории] — осуществляет переход на локальном компьютере в указанный каталог.
  • pwd — выводит на экран текущий каталог на удаленном компьютере.
  • system — выводит на экран тип операционной системы на удаленном компьютере.
  • help [FTP-команда] — помощь. Выдает краткую информацию о командах FTP-клиента или о конкретной указанной команде.

Второй вариант скрипта для работы с FTP

Пробуйте, автоматизируйте, разбирайтесь. Если есть вопросы, то в форуме охотно поделимся своими знаниями.

Читать еще:  Защитные диоды супрессоры

Ftp_put


Php функции


Php скрипты


ftp_put

(PHP 3 >= 3.0.13, PHP 4, PHP 5)

ftp_put — Загружает файл на FTP сервер

Описание

bool ftp_put ( resource ftp_stream, string remote_file, string local_file, int mode [ , int startpos ] )

ftp_put() загружает локальный файл на FTP сервер.

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

Идентификатор соединения с FTP сервером

Путь к файлу на FTP сервере

Путь к локальному файлу

Задает режим передачи. Может принимать значения FTP_ASCII или FTP_BINARY

Задает позицию в файле, с которой начинается загрузка

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

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример 1. Пример использования ftp_put()

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


User Contributed Notes

tom pittlik
20-Dec-2005 01:25

ftp_put () can display confusing warning messages as it returns one line of the remote server’s response which may be multi lined.

If you’re transferring large amounts of files note that some file systems only support up to 2000 files per directory. This had me stumped for a while.
ben at over dot bomb
25-Aug-2005 04:28

I spent some time debugging a silly problem:

In php >= 5, ftp_put () will apparently rewind to the start of the file regardless of the state you left it in before sending it to the $host .

I found this out because I wasn’t closing the file handle before using ftp_put (). Since I had just written to the file , the file pointer must have been located at the *bottom*.

I was sending a 0-byte file on php 4.2.2., but worked fine on php 5.

So, just a heads up, don’t forget to close those filehandles. Even though I was using the filename as the argument for ftp_put, it still needs to be closed.

I did not call rewind on the file handle, just fclose ( $file _h ).
Icy_Tiger_2000 at yahoo dot com dot au
16-Jul-2005 12:35

I had a little trouble getting the ftp_put to work, because of that particular server. All variables and data parsed from the previous web form had to be retreived using $_POST , $_GET or $_FILES .

If you don’t know what you sent use phpinfo (); to display what the server thinks about your data.

so. when sending files using a form and PHP, make sure that all the data (text files etc. ) are retreived with $_POST , and files (smiley.png, compression.zip, etc. ) are retreived with $_FILES .

here’s what your start of a results file might look like:

Now when it comes to transmitting that information.

hope this is usefull ˆ_ˆ
webmaster at sweetphp dot com
09-Jul-2005 04:54

Here is a fix for the function from lucas at rufy dot com below that will recursively put files from a source directory to a destination directory. As written below, it won’t put a file in a directory that already exists, because the the destination is altered. So here is the corrected function that will allow it to work:

function ftp_putAll( $conn_id , $src_dir , $d st_dir ) <
$d = dir( $src_dir );
while ( $file = $d ->read()) < // do this for each file in the directory
if ( $file != «.» && $file != «..») < // to prevent an infinite loop
if ( is_dir ( $src_dir .»/». $file )) < // do the following if it is a directory
if (! @ftp_nlist ( $conn_id , $d st_dir .»/». $file )) <
ftp_mkdir ( $conn_id , $d st_dir .»/». $file ); // create directories that do not yet exist
>
ftp_putAll( $conn_id , $src_dir .»/». $file , $d st_dir .»/». $file ); // recursive part
> else <
$upload = ftp_put ( $conn_id , $d st_dir .»/». $file , $src_dir .»/». $file , FTP_BINARY); // put the files
>
>
>
$d ->close();
>
jrisken at mn dot rr dot com
29-Jun-2005 05:32

This solution to a common problem is implied elsewhere, but I thought it might be useful to put it all in one place (since I spent hours piecing it together!)

Sometimes a web host will open PHP sessions with a user of ‘nobody’. Files created by this user may not have the correct permissions to allow management of those files by the actual owner of the site. The following script allows the actual owner to open access to a directory so that ‘nobody’ can create a file using fopen (). Then using the handle created by ‘nobody’, the ftp_fput () command saves the file with the correct owner. The file ‘nobody’ created is discarded.

herok at atwatcher dot com
17-Jun-2004 09:59

victor at nobel dot com dot br wrote that
the correct dirpath format excluded «/home/USER/» from the public path, but for my server, i had to use it in order to get my scripts to work.

it may be obvious to most but I’m positing that you cannot use the $_SERVER [ ‘DOCUMENT_ROOT’ ] path since FTP starts at your top-level and therefore bypasses (or just plain doesn’t recognize) most of the virtual server pathing.
Saeven
24-Sep-2003 08:43

if you examine the first user submitted function, ftp_putAll, it will work only if you extract this line and its matching bracket.

if (! @ftp_chdir ( $conn_id , $d st_dir .»/». $file ))

The function will have changed into that directory before having uploaded files to it. This alters your upload path and the system will try to upload into an essentially non-existent directory (duped at the end).

Hope this helps some of you.
Cheers.
Saeven
lucas at rufy dot com
04-Aug-2003 12:45

The following is a fully tested function (based on a previous note) that recursively puts files from a source directory to a destination directory. See for more information.

NOTE: use full path name for the destination directory and the destination directory must already exist

ftp_put () overwrites existing files.
Again: trivial but not mentioned here.
oheil at ecc-gmbh dot de
25-Sep-2002 04:43

If you want to copy a whole directory tree (with subdiretories),
this function (ftp_copy) might be usefull. Tested with
php 4.2.2 and a Linux OS.

$src_dir = «/from»;
$d st_dir = «/to»;

ftp_copy( $src_dir , $d st_dir );
.
ftp_close ( $conn_id )

while ( $file = $d ->read()) <

if (! @ftp_chdir ( $conn_id , $d st_dir .»/». $file )) <

ftp_mkdir ( $conn_id , $d st_dir .»/». $file );
>

ftp_copy( $src_dir .»/». $file , $d st_dir .»/». $file );
>
else <

$upload = ftp_put ( $conn_id , $d st_dir .»/». $file , $src_dir .»/». $file , FTP_BINARY);
>
>
>

$d ->close();
>
kiwo1 at yahoo dot com
28-Aug-2002 09:05

Friends,
If you wanna upload files from your harddisk by a form to a specified ftp this sample can help you.
First of all create the form:

Ссылка на основную публикацию
Adblock
detector