Я использую php ftp_connect () и ftp_put () для загрузки файла с веб-сервера на внешний сервер.
Код отлично работает при загрузке в один каталог (в данном случае / global / 1 /), но не работает, когда я загружаю в другой (в данном случае / {FCADC481-CACAA556A47A} / _ schedules /). Поэтому я не думаю, что проблема заключается в коде.
Файл, который я пытаюсь загрузить, имеет размер XML, но я также пробовал использовать .mov и .avi
I пробовали как FTP_ASCII, так и FTP_BINARY
Я пробовал с ftp_pasv и без него
Оба каталога и подкаталоги имеют одинаковые атрибуты доступа к файлам (666)
Я могу загружать в оба из этих папок, используя Filezilla напрямую.
Возвращаемая ошибка: «Ядро: Обработчик ошибок (BE): PHP Предупреждение: ftp_put (): соединение закрыто; Stream-Lesefehler.»
$response = false;
$local_file = "/test.xml";
$remote_path = "/{".$pov."}/_schedules/"; // NOTE { and } ARE part of the folder name.
$remote_file = $remote_path . "test.xml";
if($ftp_conn = ftp_connect($this->ftphost, $this->ftpport,15)){
if (ftp_login($ftp_conn, $this->ftpusr, $this->ftppss)) {
ftp_pasv($ftp_conn, true);
if (ftp_put($ftp_conn, $remote_file, $local_file, FTP_ASCII)) {
$response = true;
}
}
}
ftp_close($ftp_conn);
return $response;
Единственное, что я могу подумать, это то, что ftp через PHP не любит папки с символом "{". Но у меня нет контроля над этим сервером, поэтому я должен его использовать.
Я знаю, что {можно использовать в PHP для расшифровки значения переменной в строке, поэтому я попытался поменять символ на другой и затем str_ заменив его снова, но это не решило проблему.
Кто-нибудь может помочь?