Ops, scusa, avevo interpretato male quello che avevi messo tra parentesi. Credevo fosse un consiglio, tipo: usa TCP/21 e TCP/20!
Allora, correggimi se sbaglio, io ho il server A (client) e il server B (server remoto FTP).
Dico ad A di connettersi alla porta 110 del server B, e imposto B in modo che risponda dicendo: "la porta per lo scambio dati è di nuovo la 110".
Impostando la 110 anche per i dati, però, il log del server mi dice che non viene attivata la modalità PASV.
Impostando invece, ad esempio, la 143 per il tunnel dati, la modalità PASV funziona.
Purtroppo in entrambi i casi, ho il problema di sempre: quando lancio il comando NLST, ottengo questo errore: "425 Can't open data connection."
Uso FileZilla server. Ho impostato in "General settings":
Listen on this ports: 110
e sotto "Passive mode settings":
Use custom port range: 110 - 110 (oppure per l'altra prova: 143-143)
Comunque, allego le due righe di codice che uso per connettermi. Se c'è la connessione al server, effettuo una connessione passiva con ftp_pasv():
Codice PHP:
<?php
$myFTPServer = "***.***.***.***"; // IP del server remoto
$port = 110;
$myDir = "";
$myFiles = array();
$nome_utente = $_POST['nome_utente'];
$password = $_POST['password'];
$secureConnection = false; // true;
$stream = false;
if ($secureConnection) {
$stream = ftp_ssl_connect($myFTPServer, $port);
} else {
$stream = ftp_connect($myFTPServer, $port);
}
if ($stream) {
if (@ftp_login($stream, $nome_utente, $password)) {
ftp_pasv($stream, true);
$myFiles = ftp_nlist($stream, $myDir);
echo "Connesso!
\n";
} else {
echo "Autorizzazione negata.\n";
exit;
}
} else {
echo "Impossibile collegarsi al server.\n";
exit;
}
foreach ($myFiles as $value) {
echo $value . "
\n";
}
?>
Allego anche i due log del server.
Porta 110 per i comandi e 110 per i dati:
Codice PHP:
(000017) 15/01/2010 17:42:53 - (not logged in) (81.88.49.35)> Connected, sending welcome message...
(000017) 15/01/2010 17:42:53 - (not logged in) (81.88.49.35)> 220-Benvenuto nel Server FTP
(000017) 15/01/2010 17:42:53 - (not logged in) (81.88.49.35)> USER prova
(000017) 15/01/2010 17:42:53 - (not logged in) (81.88.49.35)> 331 Password required for prova
(000017) 15/01/2010 17:42:54 - (not logged in) (81.88.49.35)> PASS *****
(000017) 15/01/2010 17:42:54 - prova (81.88.49.35)> 230 Logged on
(000017) 15/01/2010 17:42:54 - prova (81.88.49.35)> PASV
(000017) 15/01/2010 17:42:54 - prova (81.88.49.35)> 421 Can\\'t create socket
(000017) 15/01/2010 17:42:54 - prova (81.88.49.35)> TYPE A
(000017) 15/01/2010 17:42:54 - prova (81.88.49.35)> 200 Type set to A
(000017) 15/01/2010 17:42:54 - prova (81.88.49.35)> PORT 81,88,49,35,170,218
(000017) 15/01/2010 17:42:54 - prova (81.88.49.35)> 200 Port command successful
(000017) 15/01/2010 17:42:54 - prova (81.88.49.35)> NLST
(000017) 15/01/2010 17:42:54 - prova (81.88.49.35)> 150 Opening data channel for directory list.
(000017) 15/01/2010 17:43:04 - prova (81.88.49.35)> 425 Can\\'t open data connection.
(000017) 15/01/2010 17:44:24 - prova (81.88.49.35)> disconnected.
Porta 110 per i comandi e 143 per i dati:
Codice PHP:
(000018) 15/01/2010 17:46:17 - (not logged in) (81.88.49.27)> Connected, sending welcome message...
(000018) 15/01/2010 17:46:17 - (not logged in) (81.88.49.27)> 220-Benvenuto nel Server FTP
(000018) 15/01/2010 17:46:17 - (not logged in) (81.88.49.27)> USER prova
(000018) 15/01/2010 17:46:17 - (not logged in) (81.88.49.27)> 331 Password required for prova
(000018) 15/01/2010 17:46:17 - (not logged in) (81.88.49.27)> PASS *****
(000018) 15/01/2010 17:46:17 - prova (81.88.49.27)> 230 Logged on
(000018) 15/01/2010 17:46:18 - prova (81.88.49.27)> PASV
(000018) 15/01/2010 17:46:18 - prova (81.88.49.27)> 227 Entering Passive Mode (192,168,1,3,0,143)
(000018) 15/01/2010 17:46:18 - prova (81.88.49.27)> TYPE A
(000018) 15/01/2010 17:46:18 - prova (81.88.49.27)> 200 Type set to A
(000018) 15/01/2010 17:46:39 - prova (81.88.49.27)> NLST
(000018) 15/01/2010 17:46:39 - prova (81.88.49.27)> 425 Can\\'t open data connection.
(000018) 15/01/2010 17:46:39 - prova (81.88.49.27)> disconnected.