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