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 — Öffnet eine sichere SSL-FTP-Verbindung
Beschreibung
$host
[, int $port = 21
[, int $timeout = 90
]] )
ftp_ssl_connect() öffnet eine explizite SSL-FTP-Verbindung
zu dem angegebenen host.
Hinweis: Warum diese Funktion eventuell nicht vorhanden ist
ftp_ssl_connect() ist nur verfügbar, wenn sowohl das FTP-Modul als auch OpenSSL-Unterstützung statisch in PHP eingebunden wurde. Daher ist diese Funktion in den offiziellen PHP-Builds unter Windows nicht definiert. Um diese Funktion auch unter Windows verfügbar zu machen, müssen Sie PHP selbst kompilieren.
Hinweis:
ftp_ssl_connect() ist nicht dazu gedacht, mit sFTP benutzt zu werden. Um sFTP mit PHP zu benutzen, verwenden Sie bitte ssh2_sftp().
Parameter-Liste
-
host -
Die Adresse des FTP-Servers. Die Adresse des FTP-Servers. Dieser Parameter sollte keinen abschließenden Schrägstrich und kein vorangestelltes ftp:// haben.
-
port -
Gibt einen alternativen Port für die Verbindung an. Fehlt er oder wird er auf 0 gesetzt, wird der Standard-FTP-Port 21 benutzt.
-
timeout -
Dieser Parameter bestimmt den Timeout für alle nachfolgenden Netzwerktätigkeiten. Falls er fehlt, wird er auf den Standardwert von 90 Sekunden gesetzt. Der Timeout kann jederzeit mittels ftp_set_option() gesetzt und mittels ftp_get_option() abgefragt werden.
Rückgabewerte
Gibt bei Erfolg einen SSL-FTP-Stream zurück oder FALSE, falls ein Fehler
auftrat.
Changelog
| Version | Beschreibung |
|---|---|
| 5.2.2 |
Diese Funktion gibt nun FALSE zurück, wenn sie keine
SSL-Verbindung aufbauen kann. Vorher gab es einen Fallback
auf eine Nicht-SSL-Verbindung.
|
Beispiele
Beispiel #1 ftp_ssl_connect()-Beispiel
<?php
// SSL-Verbindung aufbauen
$conn_id = ftp_ssl_connect($ftp_server);
// Login mit Benutzername und Passwort
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
echo ftp_pwd($conn_id); // /
// SSL-Verbindung schließen
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/
