W3docs

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ètreRequisDéfautDescription
$hostnameouiNom 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/.
$portnon21Port TCP de la connexion de contrôle. Le FTP standard utilise le port 21 ; modifiez-le uniquement si le serveur écoute ailleurs.
$timeoutnon90Secondes 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érez ftp_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 paquet php-ftp). Protégez-vous avec if (!function_exists('ftp_connect')) { ... } si la portabilité est importante.
  • Mode passif. Si ftp_connect() et ftp_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 avec ftp_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.

Practice

Pratique
What is true about the FTP_CONNECT function in PHP based on the information given on the given webpage?
What is true about the FTP_CONNECT function in PHP based on the information given on the given webpage?
Was this page helpful?