La valeur renvoyée par FTP_NB_Continue peut être FTP_FINIED ou FTP_FAILED , indiquant si la transmission est terminée. Si ftp_failed est retourné, cela signifie que la transmission a échoué. Si FTP_FINISSED est retourné, cela signifie que la transmission a été achevée avec succès. Cependant, dans certains cas, vous pouvez rencontrer le problème d'une exception en valeur de retour.
Solution:
Tout d'abord, assurez-vous que la connexion FTP est normale et utilisez des fonctions telles que FTP_Connect et FTP_Login pour vérifier si la connexion est réussie.
Vérifiez que le chemin cible et les autorisations sont corrects, il se peut que le fichier n'ait pas d'autorisations d'écriture ou que le dossier cible n'est pas disponible.
Utilisez FTP_ERROR pour obtenir des informations d'erreur du serveur FTP, ce qui aide à localiser le problème.
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> == FTP_FAILED) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"La transmission a échoué: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">ftp_error</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>);
}
</span></span>Lorsque vous utilisez FTP_NB_CONTINUE pour le transfert de fichiers, si le délai d'expiration de la connexion FTP est définitivement défini, il peut entraîner la connexion vers le temps Out, en particulier lors du transfert de fichiers gros.
Solution:
Utilisez FTP_SET_OPTION pour définir l'option de délai d'expiration de FTP, comme FTP_Timeout , pour éviter l'expiration de la connexion.
<span><span><span class="hljs-title function_ invoke__">ftp_set_option</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>, FTP_TIMEOUT_SEC, </span><span><span class="hljs-number">90</span></span><span>); </span><span><span class="hljs-comment">// Réglez le temps de temps d'expiration pour90Deuxième</span></span><span>
</span></span>Assurez-vous que la connexion réseau entre le serveur et le client est stable et que le serveur FTP ne retarde pas en raison d'une charge excessive.
Parfois, le serveur FTP fermera accidentellement la connexion pendant la transmission, ce qui a fait renvoyer une erreur FTP_FAILED FTP_NB_Continue .
Solution:
Vérifiez la configuration du serveur FTP pour vous assurer qu'elle n'a pas la connexion inactive définie trop courte.
Configurez le mécanisme de reconnexion automatique dans le code. Si le transfert échoue, vous pouvez essayer de vous reconnecter et de continuer à télécharger ou à télécharger.
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> == FTP_FAILED) {
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>);
</span><span><span class="hljs-variable">$ftp_connection</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_host</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>, </span><span><span class="hljs-variable">$ftp_user</span></span><span>, </span><span><span class="hljs-variable">$ftp_pass</span></span><span>);
}
</span></span>Les erreurs de chemin sont une autre erreur courante. Assurez-vous que le chemin de téléchargement et le chemin de destination du fichier sont corrects et qu'il n'y a pas d'orthographe de chemin.
Solution:
Utilisez la fonction FTP_CHDIR pour passer au répertoire cible pour vous assurer que le fichier peut être téléchargé vers le bon emplacement.
Avant le transfert de fichier, utilisez FTP_PWD pour obtenir le répertoire actuel et vérifiez si le chemin est correct.
<span><span><span class="hljs-variable">$currentDir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_pwd</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Répertoire actuel: "</span></span><span> . </span><span><span class="hljs-variable">$currentDir</span></span><span>;
</span></span>Si le dossier de destination du serveur FTP n'a pas d'autorisations d'écriture, FTP_NB_CONTINUE peut ne pas être en mesure de télécharger le fichier avec succès. Ce problème se produit généralement dans des environnements d'hébergement partagés.
Solution:
Assurez-vous que le dossier cible dispose des paramètres d'autorisation corrects, qui peuvent généralement être définis sur 755 ou 777 (selon la situation).
Si vous gérez le serveur via CPanel ou des outils similaires, vous pouvez ajuster directement les autorisations du dossier via le gestionnaire de fichiers.
<span><span><span class="hljs-title function_ invoke__">ftp_chmod</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>, </span><span><span class="hljs-number">0777</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>);
</span></span>FTP_NB_CONTINUE n'est pas bloquant, mais les connexions de données (c'est-à-dire les canaux de données utilisés pour les transferts de fichiers) peuvent être bloqués. Si vous utilisez la connexion en mode passif (PASV), la connexion de données peut échouer en raison du pare-feu ou d'autres restrictions réseau.
Solution:
Essayez de passer en mode actif pour contourner les limites du pare-feu et utiliser la fonction FTP_PASV pour passer en mode passif.
<span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$ftp_connection</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>); </span><span><span class="hljs-comment">// Utiliser le mode actif</span></span><span>
</span></span>De plus, vous pouvez également essayer de modifier la configuration du port du client FTP pour éviter d'utiliser des ports restreints.
Si les données mise en cache ne sont pas actualisées dans le temps pendant le transfert de fichier, cela peut entraîner un téléchargement ou un téléchargement incomplet du fichier, ou que le contenu du fichier est incohérent.
Solution:
Avant de transférer des fichiers, assurez-vous de fermer tout cache possible ou utilisez les fonctions FTP_NB_PUT et FTP_NB_GET pour transférer directement les fichiers pour éviter les interférences du cache.
PHP peut interrompre les opérations de transfert de fichiers en raison de contraintes de ressources, en particulier lorsque les transferts de fichiers sont très importants. Les limitations courantes des ressources incluent le temps d'exécution maximal, les limites de mémoire, etc.
Solution:
La limite de temps d'exécution maximale pour PHP peut être annulée par set_time_limit (0) .
<span><span><span class="hljs-title function_ invoke__">set_time_limit</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// Annuler la limite de temps d'exécution maximale</span></span><span>
</span></span>Si vous rencontrez des problèmes de limite de mémoire, vous pouvez augmenter la limite de mémoire des scripts PHP par ini_set ('Memory_limit', '512M') .