ftp — дубликаты файлов при загрузке с помощью ftp_put () в переполнении стека

Итак, ситуация такова, что, скажем, «клиент» изменил свой ftp-сервер, и у меня есть скрипт, который загружает данные на их сервер через ftp_put (). Я думаю, что они имеют разные разрешения на своем FTP-сервере, когда я загружаю файлы. Загрузка ведет себя очень странно с их новым сервером, некоторые файлы дублируются примерно 5 раз, другие — вообще не дублируются. Имейте в виду, что тот же скрипт работал правильно на их старом сервере.

На скриншоте, который мне прислали, я заметил, что на их сервере теперь есть только права на чтение и запись. Раньше тоже имел разрешение на удаление. Когда я попытался загрузить файлы на наш собственный сервер и забрал удаление разрешений, все перестало работать.

Поэтому я думаю, что это проблема, возможно, поскольку журналы показали, что я могу быть совершенно не прав, ftp_put () пытается удалить файлы, прежде чем загружать их на сервер, чтобы избежать дублирования. Это правильно и есть ли обходной путь к этому?

Сама функция отправки файлов действительно проста:

function send_to_ftp($ftp_server, $ftp_username, $ftp_password, $fileName,

$subFolder = "n/") {

$ftp_conn = ftp_connect($ftp_server);
if (!$ftp_conn) return false;
$login = ftp_login($ftp_conn, $ftp_username, $ftp_password);
$reciver_path = $subFolder . end(explode('/', $fileName));
$local_folder = $fileName;
return (ftp_put($ftp_conn, $reciver_path, $local_folder, FTP_ASCII));
//ftp_close($ftp_conn);
}

0

Решение

Он отсутствует в документации на php.net, но упоминается в комментарии.
ftp_put пытается перезаписать существующий файл, и именно поэтому у вас есть проблемы с разрешениями. Удвоение может заключаться в том, что без чтения исходного кода функции php ftp_put перезаписью действительно является удаление и выгрузка или что вы запускаете функцию несколько раз.

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

Используйте ftp_nlist, чтобы получить контент в целевом пути и посмотреть, существует ли он.
http://php.net/manual/en/function.ftp-nlist.php

Если вам нужно загрузить уже существующий файл, вам нужно просмотреть свои разрешения у владельца сервера.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector