Je dois générer un fichier CSV
à partir d'une requête MySQL
et enregistrer le fichier sur un serveur SFTP
. J'ai essayé le code ci-dessous. Le fichier CSV
est créé, mais il est vide. Je reçois également un message d'erreur dans le navigateur qui indique Warning: is_file() expects parameter 1 to be a valid path, resource given
en ce qui concerne cette ligne $sftp->put($fileName, $fp, NET_SFTP_LOCAL_FILE);
. Si je déplace fclose($fp);
à la dernière ligne, je ne reçois pas l'erreur mais les données n'apparaissent toujours pas dans le fichier. Est-ce que quelqu'un pourrait me faire savoir comment enregistrer les données dans le fichier créé?Créer un fichier CSV en PHP et enregistrer dans SFTP en utilisant phpseclib
$fileName = 'dataFiles/reports/Report Summary/Report Summary.csv';
$sql = mysqli_query($db, "
SELECT *
FROM reports
WHERE reportID = 1
");
$fp = fopen('php://output', 'w');
$first = true;
while($row = mysqli_fetch_assoc($sql)){
if ($first) {
fputcsv($fp, array_keys($row));
$first = false;
}
fputcsv($fp, $row);
}
fclose($fp);
$sftp->put($fileName, $fp, NET_SFTP_LOCAL_FILE);
http://phpseclib.sourceforge.net/sftp/examples.html#put - vous devez donner à cette méthode soit une chaîne de données à écrire, soit le nom d'un fichier local pour lire le contenu à écrire - pas un pointeur de fichier. – CBroe