ftp_connect()
La fonction ftp_connect() est une fonction PHP intégrée permettant d'établir une connexion FTP vers un serveur distant.
La fonction PHP ftp_connect()
ftp_connect() ouvre une connexion de contrôle vers un serveur FTP et renvoie un handle de connexion dont chaque autre fonction FTP (ftp_login(), ftp_get(), ftp_put(), …) a besoin comme premier argument. Considérez-la comme un appel vers le serveur : l'appel ouvre seulement le canal — il ne vous authentifie pas. Vous devez encore vous connecter avec ftp_login() avant de pouvoir transférer des fichiers.
Cette page couvre la syntaxe, les trois paramètres, un flux de travail complet connexion-authentification-fermeture, la gestion des échecs, et la relation entre ftp_connect() et son homologue sécurisé, ftp_ssl_connect().
Syntaxe
ftp_connect(string $hostname, int $port = 21, int $timeout = 90): FTP\Connection|false| Paramètre | Requis | Défaut | Description |
|---|---|---|---|
$hostname | oui | — | Nom d'hôte ou adresse IP du serveur FTP. N'incluez pas le schéma ftp:// ni de barre oblique finale — passez ftp.example.com, pas ftp://ftp.example.com/. |
$port | non | 21 | Port TCP de la connexion de contrôle. Le FTP standard utilise le port 21 ; modifiez-le uniquement si le serveur écoute ailleurs. |
$timeout | non | 90 | Secondes d'attente pour les opérations réseau sur cette connexion avant d'abandonner. |
Valeur de retour. En cas de succès, vous obtenez un objet de connexion — une instance FTP\Connection depuis PHP 8.1, ou une resource dans les versions antérieures. En cas d'échec, la fonction renvoie false, donc le résultat doit toujours être vérifié avant utilisation.
Remarque :
ftp_connect()établit une connexion non chiffrée — les identifiants et les données circulent en clair. Pour tout usage sur l'Internet public, préférezftp_ssl_connect()(FTPS).
Un flux de travail complet connexion → authentification → fermeture
Une session typique ouvre la connexion, s'authentifie, effectue son travail, puis ferme le handle :
<?php
// 1. Open the control connection (does not log you in)
$conn = ftp_connect('ftp.example.com', 21, 30);
// 2. Authenticate
ftp_login($conn, 'username', 'password');
// 3. Many servers behind NAT/firewalls need passive mode
ftp_pasv($conn, true);
// 4. Do some work — e.g. upload a file
ftp_put($conn, 'backup.sql', 'local-backup.sql', FTP_BINARY);
// 5. Always release the connection
ftp_close($conn);Chaque étape correspond à une fonction dédiée : ftp_login() authentifie, ftp_pasv() active le mode passif, ftp_put() et ftp_get() transfèrent des fichiers, et ftp_close() ferme la connexion.
Gestion d'une connexion échouée
Comme ftp_connect() renvoie false en cas d'échec, traitez un handle manquant comme une erreur bloquante — appeler des fonctions FTP ultérieures avec false déclenche une TypeError. Vérifiez à la fois la connexion et l'authentification :
<?php
$conn = ftp_connect('ftp.example.com', 21, 30);
if ($conn === false) {
// Wrong host, blocked port 21, or DNS/network failure
exit("Could not reach the FTP server.\n");
}
if (!ftp_login($conn, 'username', 'password')) {
ftp_close($conn);
exit("Login failed — check the username and password.\n");
}
echo "Connected and authenticated.\n";
// ... transfer files ...
ftp_close($conn);Utilisez une comparaison stricte === false plutôt que !$conn. Les deux se comportent de la même façon pour ftp_connect(), mais === false rend votre intention explicite et évite les surprises lorsqu'une fonction peut légitimement renvoyer une valeur vide mais vraie.
Pièges courants
- L'extension FTP peut être désactivée. Les fonctions
ftp_*nécessitent PHP compilé avec--enable-ftp(ou le paquetphp-ftp). Protégez-vous avecif (!function_exists('ftp_connect')) { ... }si la portabilité est importante. - Mode passif. Si
ftp_connect()etftp_login()réussissent mais que les listings ou les transferts restent bloqués, le serveur est probablement derrière un pare-feu — passez en mode passif avecftp_pasv($conn, true)après l'authentification. - Se connecter n'est pas s'authentifier. Un handle renvoyé signifie seulement que le canal TCP est ouvert. Un mauvais mot de passe échoue plus tard, lors de l'appel à
ftp_login(). - Pas de préfixe
ftp://. Passez un nom d'hôte brut ; le schéma est implicite à la fonction.
Pour une vue d'ensemble de l'ensemble des fonctions FTP, consultez la référence des fonctions PHP FTP.