Comment télécharger des fichiers avec de roulage sur le serveur sftp
Ce code
$user = 'user';
$pass = 'password';
$filename = 'text.txt';
error_reporting(E_ALL);
ini_set('display_errors', 1);
$ch = curl_init();
$localfile = 'text.txt';
$fp = fopen($localfile, 'r');
curl_setopt($ch, CURLOPT_URL, 'sftp://$user:[email protected]/upload/$filename');
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
curl_exec ($ch);
$error_no = curl_errno($ch);
curl_close ($ch);
if ($error_no == 0) {
$error = 'File uploaded succesfully.';
} else {
$error = 'File upload error.';
}
echo $error.' '.$error_no;
me donne cette erreur:
Upload de fichier d'erreur. 7 ( pas réussi à écrire le fichier sur le disque )
Mon exigence est simple, j'ai juste besoin de télécharger text.txt
fichier sur le serveur à l'aide de curl.
- Eh bien, êtes-vous en mesure de télécharger le fichier à partir du même serveur en utilisant les mêmes informations d'identification avec la ligne de commande sftp utilitaire? Parce que cela ressemble à un problème de serveur...
- Avez-vous essayé d'utiliser
CURLOPT_VERBOSE => 1
?
Vous devez vous connecter pour publier un commentaire.
Donc pour le diagnostic de la SSH /SFTP problèmes je pense phpseclib, un pur PHP SFTP mise en œuvre, est la meilleure approche. Voici comment:
En particulier, de ce qui est utile sur phpseclib est sa capacité à créer des fichiers journaux de sorte que vous pouvez voir ce qu'il se passe.
Je pense que c'est plus facile à utiliser, trop, lol, mais c'est à vous de voir.
Peut-être que ce lien peut vous aider,
Il y a quelques exemples des différentes façons de télécharger des fichiers à l'aide de CURL.
ou essayez cette
Réponses à cette question m'a aidé aujourd'hui.
Je veux juste faire remarquer que votre vars dans
'sftp://$user:[email protected]/upload/$filename'
ne sera jamais interprété depuis que vous utilisez des guillemets simples. Vous devez utiliser des guillemets ou de concaténer votre vars unique chaînes entre guillemets.J'ai également eu le problème que votre script, que j'ai utilisé comme point de départ, n'a pas fonctionné. Donc je viens de mettre la CURLOPT_VERBOSE et a ajouté curl_error résultat à la sortie. De cette façon, j'ai réalisé, que curl n'avait pas de prise en charge ssh activé dans mon cas, que j'ai pu résoudre par ré-émergentes (=re-construire sur d'autres systèmes, je suis sur gentoo) avec prise en charge ssh. Aussi les guillemets simples dans votre code empêcher de corriger la substitution de variable.
Après la résolution de ces problèmes, et quelques fautes de frappe, mon résultat avec votre fonction, à l'aide de mon test d'identification et d'accueil, ressemble à ceci maintenant :
Fichier téléchargé avec succès. 0