I wasted a lot of time trying to get FTP over SSL/TLS working in PHP on Windows OS (with precompiled SSL PHP-packages etc.). However, it never worked for me.
I'm happy I found a nice solution now:
using "MovieIt Freely", a commandline FTP-Client, freeware at http://www.standardnetworks.com.
A nice tool that worked on all SSL/TLS-enabled FTP-Server for me.
Its easy to get it to interact with PHP:
a) Create a temporary batch-txt-file and therein write all your commands to be performed
b) then launch the program with exec() or backticks, let MovieIt read the batch-txt-file and forward/write down the log/results in a temporary results-txt-file
c) Finally read the log/results-txt-file
Check the manual for details.
Hope it helps. Cheers!
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);
?>
ftp_ssl_connect
09-Feb-2005 04:24
16-Jul-2004 03:08
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/
22-Jan-2004 03:56
Just remember: SSL FTP != SFTP
Differences: an SSL FTP connects on port 990, and you need an ftp server which will support this (seems like none in the SuSE linux distribution do). Even if you get this function to work, and it connects ok to a normal FTP server on port 21, data WILL NOT BE ENCRYPTED. If you don't believe me, go sniff it yourself!