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 — Apre una connessione SSL-FTP connessione
Descrizione
$host
[, int $port
[, int $timeout
]] )
Restituisce uno stream SSL-FTP in caso di successo o FALSE in caso di errore.
La funzione ftp_ssl_connect() apre una connessione SSL-FTP verso
il server host. Il parametro port
specifica una porta alternativa a cui connettersi. Se omesso
o impostato a zero allora viene usata la porta 21 standard.
Il parametro timeout specifica il timeout per tutte
le operazioni di rete successive. Se omesso il valore predefinito e' di 90
secondi. Il timeout puo' essere interrogato o modificato in qualsiasi momento
con le funzioni ftp_set_option()
e ftp_get_option().
Example #1 Esempio di funzione ftp_ssl_connect()
<?php
// stabilisce una connessione ssl
$conn_id = ftp_ssl_connect($ftp_server);
// si collega come username e password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
echo ftp_pwd($conn_id); // /
// chiude la connessione ssl
ftp_close($conn_id);
?>
Nota: Perche' questa funzione puo' non essere presente
La funzione ftp_ssl_connect() e' disponibile solo se il supporto OpenSSL e' abilitato nella versione corrente di PHP. Se non e' definito ed e' stato incluso il supporto a FTP durante la compilazione, questa e' la ragione per cui la funzione non e' presente.
Vedere anche ftp_connect().
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/
