Я пытаюсь отправить строковые данные на удаленный путь FTP. Я делал это раньше в других настройках, но в этом случае сервер, похоже, не распознает строку идентификации. Вероятно, это просто небольшая синтаксическая ошибка в строке пути ftp, но я ее не вижу.
Я знаю, что достигаю удаленного сервера, потому что я могу проверить файл журнала и увидеть сообщение
Did not receive identification string from xxx.xxx.xxx.xxx
за каждую попытку, которую я делаю.
После некоторого зависания мой скрипт просто возвращает ошибку
Warning: fopen() failed to open stream.
Мой путь к файлу отформатирован следующим образом:
$ftp_path = "ftps://user:password@remoteaddress:12345/path/to/file/filename.txt";//port 12345 is deliberate because I use port forwarding on the server to reduce failed hack attempts
Часть сценария, которая имеет дело с соединением, выглядит следующим образом:
$ftp_path = "ftps://user:password@remoteaddress:12345/path/to/file/filename.txt";
// Allow/disallow overwriting of existing files on the remote FTP server
$stream_options = array('ftps' => array('overwrite' => false));
// Creates a stream context resource with the defined options
$stream_context = stream_context_create($stream_options);
// Opens the file for writing and truncates it to zero length
if ($fh = fopen($ftp_path, 'w', 0, $stream_context)){
// Writes contents to the file
if(fputs($fh, $content)){
echo "records pushed successfully.";
} else {
echo "The stream was opened, but the records failed to push.";
}
// Closes the file handle
fclose($fh);
} else {
die('Could not open remote ftp.');
}
Эта ошибка может указывать на то, что вы пытаетесь получить доступ к серверу SFTP / SSH через оболочку FTP. FTP / FTPS и SSH / SFTP не являются совместимыми протоколами, поэтому не путайте FTPS с SFTP.
Других решений пока нет …