Position actuelle: Accueil> Derniers articles> Notes sur l'utilisation de FTP_RAWLIST sur les systèmes Windows

Notes sur l'utilisation de FTP_RAWLIST sur les systèmes Windows

gitbox 2025-05-26

1. Introduction à ftp_rawlist

La fonction de la fonction ftp_rawlist est d'envoyer une commande ftp (par défaut est la liste ) et de renvoyer la liste de répertoires d'origine renvoyée par le serveur FTP. Le résultat est un tableau, chaque élément est une ligne de chaîne contenant les détails d'un fichier ou d'un répertoire. L'exemple de code est le suivant:

<code> $ conn = ftp_connect ('gitbox.net'); FTP_LOGIN ($ Conn, «Nom d'utilisateur», «mot de passe»); $ list = ftp_rawlist ($ Conn, '/ path / to / répertoire'); foreach ($ list as $ item) {echo $ item. "\ n"; } ftp_close ($ Conn); </code>

2. Problèmes spéciaux avec la plate-forme Windows

2.1 Différences dans les formats de commande de liste de différents serveurs FTP

Le format de données renvoyé par FTP_RAWLIST n'est pas fixe, selon le type de serveur FTP. Les serveurs Windows (tels que IIS FTP) renvoient généralement un format de liste différent d'un serveur UNIX / Linux, et même différentes versions du même serveur peuvent renvoyer un format différent.

Par exemple:

  • Unix Server renvoie quelque chose comme -rw-r - r-- 1 groupe d'utilisateurs 12345 mars 14 10:30 FileName.txt

  • Windows Server peut retourner 03-14-21 10:30 AM <dir> Nom de dossier

Cette différence de format entraîne l'adaptation de l'analyse des résultats retournés à différentes situations, en particulier lors de l'exécution sur les systèmes Windows, on ne peut pas supposer que le format de retour doit être un style Unix.

2.2 Problème d'encodage de caractères

Le serveur FTP Windows System peut utiliser différents encodages de caractères (tels que GBK, GB2312), tandis que PHP par défaut UTF-8, résultant en codes brouillé dans la liste de répertoires renvoyés. La solution est:

  • Déterminez d'abord l'encodage du serveur FTP

  • Effectuez la conversion de codage correspondante de la chaîne retournée, telle que l'utilisation de MB_CONVERT_ENCODING pour convertir GBK en UTF-8.

Exemple:

<code> $ list = ftp_rawlist ($ Conn, '/ Path / To / Directory'); foreach ($ list as & $ item) {$ item = mb_convert_encoding ($ item, 'utf-8', 'gbk'); } unset ($ item); </code>

3. Suggestions d'analyse des résultats renvoyés par FTP_RAWLIST

Étant donné que les formats de retour des différentes plates-formes et serveurs sont différents, la méthode recommandée est:

  • Déterminez d'abord le type de serveur (certains serveurs FTP renverront les informations de type lors de la connexion)

  • Sélectionnez différentes logiques d'analyse en fonction du type de serveur

  • Analyser les lignes de liste retournée à l'aide d'expressions régulières ou une bibliothèque d'analyse dédiée

Voici un exemple simple démontrant une analyse du format de retour pour un serveur FTP Windows IIS:

<code> foreach ($ list as $ item) {if (preg_match ('/ ^ (\ d {2}) - (\ d {2}) - (\ d {2}) \ s + (\ d {2}: \ d {2}) (am | pm) \ s + (<dir> | \ d +) \ s + (. +) $ / i', $ $ correspond [1]. '-'. $ correspond [2]. '-'. $ correspond [3]; $ time = $ correspond [4]. $ correspond [5]; $ type = $ correspond [6] === '<dir>'? «répertoire»: «fichier»; $ name = $ correspond [7]; Echo "Nom: $ Name, Type: $ Type, Date: $ Date $ time \ n"; } else {echo "Ligne non reconnue: $ item \ n"; }} </code>

4. Paramètres de connexion et délai d'expiration

Les serveurs FTP Windows sont parfois lents à répondre, il est donc recommandé de définir un délai d'expiration approprié:

<code> $ conn = ftp_connect ('gitbox.net', 21, 90); // 90 Deuxième délai FTP_Login ($ Conn, «Nom d'utilisateur», «mot de passe»); </code>

5. Mode passif (PASV) et mode actif (port)

La compatibilité du mode de connexion FTP est différente sur les plates-formes Windows et Linux. Le mode passif est généralement recommandé pour les fenêtres:

<code> ftp_pasv ($ Conn, true); </code>

Sinon, le FTP_RAWLIST peut ne pas obtenir le répertoire en raison de problèmes de configuration de feu de feu ou de réseau.


Résumer

Lorsque vous utilisez FTP_RAWLIST de PHP sur Windows Systems, portez une attention particulière à:

  • Différence dans le format de la liste des répertoires renvoyée par le serveur FTP

  • Problème d'encodage de caractère

  • Analyse appropriée pour retourner les résultats

  • Paramètres de délai d'expiration et de transfert de connexion

Cela peut maximiser la compatibilité multiplateforme et la robustesse du programme.