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 — Abre uma conexão SSL-FTP segura
Descrição
$host
[, int $port
[, int $timeout
]] )
ftp_ssl_connect() abre uma conexão SSL-FTP com
host(servidor) especificado.
Nota: Por que esta função pode não existir
ftp_ssl_connect() esta disponível apenas se o suporte a OpenSSL esta ativado em sua versão do PHP. Se não estiver definido e você compilou o suporte FTP então este é o motivo. Para o Windows, você deve compilar os seus proprios binários para ter suporte a esta função.
Parâmetros
-
host -
O endereço do servidor FTP. Este parâmetro não deve ter barra ao final e não deve ter o prefixo ftp://.
-
port -
Este parâmetro especifica uma porta alternativa para conectar. Se for omitido ou definido como zero, então a porta padrão do FTP, 21 será usada.
-
timeout -
Este parâmetro especifica o limite de tempo para todas as operações de rede subsequentes. Se omitido, o valor padrão é 90 segundos. O limite de tempo pode ser mudado e obtido a qualquer tempo com ftp_set_option() e ftp_get_option().
Valor Retornado
Retorna um stream SSL-FTP em caso de sucesso ou FALSE em caso de erro.
Changelog
| Versão | Descrição |
|---|---|
| 5.2.2 |
A função foi modificada para retornar FALSE quando ela não pode usar uma
conexão SSL, ao invés de usar uma conexão não SSL como anteriormente.
|
Exemplos
Exemplo #1 Exemplo ftp_ssl_connect()
<?php
// set up basic ssl connection
$conn_id = ftp_ssl_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
echo ftp_pwd($conn_id); // /
// close the ssl connection
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/
