Envoyer un fichier .xml via cURL vers un sFTP OVH
... / Envoyer un fichier .xml v...
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Question

Envoyer un fichier .xml via cURL vers un sFTP OVH

by
CedricC43
Created on 2021-02-11 14:13:33 (edited on 2024-09-04 14:12:23) in FTP et SSH

Bonjour,

Je dois, depuis mon site, envoyer un fichier .xml automatiquement tous les X temps vers ce serveur sFTP (chez OVH).
Je possède les accès au FTP (sFTP). Via FileZilla ou tout autre logiciel, je peux me connecter au FTP sans souci et y créer des fichiers/dossiers. En revanche, avec mon code PHP qui doit se connecter au FTP via cURL depuis mon site afin d'envoyer le fichier .xml vers le serveur FTP d'OVH, la connexion est refusée avec ces mêmes accès. Y aurait-il un blocage du côté d'OVH ?

Voici le code utilisé :

$dataFile = $xml_path;
$sftpServer = 'ftp.monserveur.com';
$sftpUsername = 'monaccount';
$sftpPassword = 'monpass';
$sftpPort = 22;
$sftpRemoteDir = '/public_html';
$ch = curl_init('sftp://' . $sftpServer . ':' . $sftpPort . $sftpRemoteDir . '/' . basename($dataFile));
$fh = fopen($dataFile, 'r');
if ($fh) {
curl_setopt($ch, CURLOPT_USERPWD, $sftpUsername . ':' . $sftpPassword);
curl_setopt($ch, CURLOPT_UPLOAD, true);
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
curl_setopt($ch, CURLOPT_INFILE, $fh);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($dataFile));
curl_setopt($ch, CURLOPT_VERBOSE, true);

$headers = array(
"Connection: close",
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$verbose = fopen('php://temp', 'w+');
curl_setopt($ch, CURLOPT_STDERR, $verbose);

$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);

if ($response) {
echo "Success";
error_log("Success");
} else {
echo "Failure";
error_log("Failure");
rewind($verbose);
$verboseLog = stream_get_contents($verbose);
echo "Verbose information:\n" . $verboseLog . "\n";
error_log("Verbose information:\n" . $verboseLog . "\n");
}
}

J'obtiens ce message :
> FailureVerbose information: * Trying **.**.**.***... * connect to **.**.**.*** port 22 failed: Connection refused * Failed to connect to ftp.monserveur.com port 22: Connection refused * Closing connection 0

Merci d'avance,
Cédric