Something that isn't mentioned above is that although ftp_ssl_connect may be available and will return an FTP stream it may not be usable. Take the following code (FTP login credentials are obviously set elsewhere):
<?php
var_dump(function_exists('ftp_ssl_connect'));
if(function_exists('ftp_ssl_connect'))
{
$ftp_connection = @ftp_ssl_connect($this->ftp_host);
}
else
{
$ftp_connection = @ftp_connect($this->ftp_host);
}
var_dump($ftp_connection);
if($ftp_connection)
{
ftp_login($ftp_connection, $this->ftp_user, $this->ftp_password);
}
// output: bool(true) resource(71) of type (FTP Buffer)
?>
From this you'd assume everything would work, ftp_ssl_connect is available and you have a connection. However, once you get to ftp_login, you could get this:
Warning [2] ftp_login() [function.ftp-login]: AUTH not understood
This is because the server is not configured to understand the encrypted details, even though the function is available and an SSL-FTP stream was opened.
If you are trying to use ftp_ssl_connect make sure you check if you can login after using it, and if not, connect again with standard ftp_connect.
Hope this is of use.
ftp_ssl_connect
(PHP 4 >= 4.3.0, PHP 5)
ftp_ssl_connect — Ouvre une connexion FTP sécurisée avec SSL
Description
$host
[, int $port = 21
[, int $timeout = 90
]] )
ftp_ssl_connect() ouvre explicitement une connexion
FTP sécurisée avec SSL sur l'hôte host spécifié.
Note: Pourquoi cette fonction peut ne pas exister ?
ftp_ssl_connect() n'est disponible que si le module ftp et le support OpenSSL sont compilés statiquement dans PHP, cela signifie que, sous Windows, cette fonction sera indéfinie dans la version officielle de PHP. Afin d'utiliser cette fonction sous Windows, vous devez compiler vos propres binaires PHP.
Note:
ftp_ssl_connect() n'est pas prévu pour fonctionner avec sFTP. Pour utiliser sFTP avec PHP, reportez-vous à la fonction ssh2_sftp().
Liste de paramètres
-
host -
L'adresse FTP du serveur. Ce paramètre ne doit pas comporter de slash final et ne doit pas être préfixé par ftp://.
-
port -
Ce paramètre spécifie un port alternatif de connexion. S'il est omis ou défini à zéro, alors le port par défaut FTP, 21, sera utilisé.
-
timeout -
Ce paramètre spécifie le délai de connexion pour toutes les opérations sur le réseau. S'il est omis, la valeur par défaut sera de 90 secondes. Ce délai de connexion peut être modifié et consulté à tout moment avec les fonctions ftp_set_option() et ftp_get_option().
Valeurs de retour
Retourne un flux SSL-FTP en cas de succès ou FALSE si une erreur survient.
Historique
| Version | Description |
|---|---|
| 5.2.2 |
Cette fonction retourne FALSE lorsqu'elle ne peut pas utiliser une connexion
SSL, au lieu d'utiliser à la place une connexion non-SSL.
|
Exemples
Exemple #1 Exemple avec ftp_ssl_connect()
<?php
// Mise en place d'une connexion basique
$conn_id = ftp_ssl_connect($ftp_server);
// Identification avec un nom d'utilisateur et un mot de passe
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
echo ftp_pwd($conn_id); // /
// Fermeture de la connexion SSL
ftp_close($conn_id);
?>
Since ftp_ssl_connect() requires SSL compiled into PHP, Windows users will need to compile their own PHP this way or download it from another source. Here's one such (and trusted) source:
* http://ftp.emini.dk/pub/php/win32/openssl/
