Position actuelle: Accueil> Derniers articles> Lorsque vous utilisez FTP_PASV, comment avez-vous besoin de configurer le serveur FTP pour éviter les erreurs? Une brève explication

Lorsque vous utilisez FTP_PASV, comment avez-vous besoin de configurer le serveur FTP pour éviter les erreurs? Une brève explication

M66 2025-07-04
<span><span>--------------------------------------------------

utiliser ftp_pasv heure,FTP Comment configurer le serveur afin qu&#39;il n&#39;y ait pas d&#39;erreurs?Une brève explication

--------------------------------------------------

exister PHP milieuutiliser ftp_pasv Les fonctions permettent le mode passif(Passive Mode)connecter FTP serveurheure,常常会遇到connecter失败或数据传输milieu断的问题。Cela est principalement dû à FTP La configuration du serveur ne correspond pas à l&#39;environnement réseau,Faire échouer le client à établir correctement le canal de données。本文将详细说明utiliser ftp_pasv heure,FTP Comment configurer le serveur,才能保证connecter稳定、Transmission en douceur。

un、FTP Une brève description du mode actif et du mode passif  
FTP connecter由控制connecter和数据connecter组成。Mode actif(Active Mode)milieu,Le client le dit au serveurIPet ports,serveur主动connecter客户端进行数据传输;Mode passif(Passive Mode)Le serveur indique au client le port de données,客户端主动connecterserveur。Mode passif通常适合客户端处于防火墙或NAT环境heureutiliser。

deux、为什么utiliser ftp_pasv?  
exister现代网络环境milieu,Les clients sont souvent situés derrière des pare-feu ou des routeurs,Mode actifconnecter因被动防火墙阻挡而失败。Ouvrir ftp_pasv Mode passif后,Les clients peuvent contourner ces restrictions,主动connecterserveur指定的端口进行数据传输,Cela améliore le taux de réussite。

trois、FTP Comment configurer le serveur?  
</span><span><span class="hljs-number">1</span></span><span>. **配置Mode passif端口范围**  
serveur必须设置un段专用的端口范围供Mode passifutiliser,Par exemple </span><span><span class="hljs-number">50000</span></span><span>-</span><span><span class="hljs-number">51000</span></span><span>。  
- exister vsftpd milieu,Le fichier de configuration est généralement `/etc/vsftpd/vsftpd.conf`,Ajouter ou modifier:  
  ```conf
  pasv_min_port=</span><span><span class="hljs-number">50000</span></span><span>
  pasv_max_port=</span><span><span class="hljs-number">51000</span></span><span>
</span></span>
  • D'autres serveurs FTP tels que ProfTPD et Pure-FTPD ont également des configurations similaires.

  1. Port de pare-feu ouvert <br> La plage de ports de données de mode passive (telle que 50000-51000 dans l'exemple ci-dessus) doit être publiée dans le pare-feu du serveur. Sinon, le client ne peut pas se connecter à ces ports, entraînant une défaillance de la transmission.

  • Par exemple, en utilisant des iptables , ajoutez des règles:

     <span><span>iptables -I INPUT -p tcp --match multiport --dports 50000:51000 -j ACCEPT
    </span></span>
  • Si vous utilisez Firewalld ou un autre logiciel de pare-feu, la configuration correspondante est également requise.

  1. Configurer l'IP publique du serveur
    Le serveur est généralement situé dans l'intranet ou utilise NAT, et doit indiquer au client la bonne adresse IP publique.

  • Dans VSFTPD, configurez:

     <span>pasv_address=Votre réseau publicIPadresse
    </span>
  • Sinon, le client obtient l'IP intranet et ne peut pas se connecter au port de données.

  1. Configurer le délai de connexion et le nombre maximum de connexions <br> Ajustez les paramètres de délai d'expiration et le nombre maximal de connexion de manière appropriée pour éviter la déconnexion de la connexion prématurée ou la pénurie de ressources du serveur.

4. Exemples de code PHP Ce qui suit est un exemple simple d'activation du mode passif et de téléchargement de fichiers:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$ftp_server</span></span><span> = </span><span><span class="hljs-string">"ftp.example.com"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_user</span></span><span> = </span><span><span class="hljs-string">"username"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_pass</span></span><span> = </span><span><span class="hljs-string">"password"</span></span><span>;
</span><span><span class="hljs-variable">$local_file</span></span><span> = </span><span><span class="hljs-string">"/path/to/local/file.txt"</span></span><span>;
</span><span><span class="hljs-variable">$remote_file</span></span><span> = </span><span><span class="hljs-string">"file.txt"</span></span><span>;

</span><span><span class="hljs-comment">// connecter FTP</span></span><span>
</span><span><span class="hljs-variable">$conn_id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_server</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$conn_id</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"无法connecter FTP serveur"</span></span><span>);
}

</span><span><span class="hljs-comment">// Se connecter</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$conn_id</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><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"FTP Se connecter失败"</span></span><span>);
}

</span><span><span class="hljs-comment">// OuvrirMode passif</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);

</span><span><span class="hljs-comment">// Télécharger le fichier</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_put</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>, </span><span><span class="hljs-variable">$local_file</span></span><span>, FTP_BINARY)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Télécharger avec succès"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le téléchargement a échoué"</span></span><span>;
}

</span><span><span class="hljs-comment">// 关闭connecter</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

5. Résumé Lorsque vous utilisez FTP_PASV, la clé consiste à configurer correctement la plage de port en mode passif, les règles de pare-feu et les adresses IP de réseau public du côté serveur. Aucune d'entre elles n'est manquante, sinon le client ne pourra pas établir correctement une connexion de données. Tant que le serveur est configuré raisonnablement et combiné avec le code PHP correct, les erreurs de connexion dans la plupart des modes passives FTP peuvent être évitées.

Grâce à l'explication de cet article, je pense que vous avez une compréhension claire de la configuration du mode passif FTP et que vous pouvez utiliser FTP_PASV en douceur dans les projets réels pour assurer un transfert de fichiers stable et efficace.

 <span></span>