I've been using the php ftp functions pretty extensively at work. We've recently discovered that some of the ftp servers we connect to, paticularly in Europe, are using extended passive mode. On a server using extended passive mode the php ftp functions will timeout. For those of you who encounter this, the solution is to send the command:
ftp_exec (conn_id, 'epsv4 off' );
Do this immediately after ftp_login and you should be fine.
ftp_exec
(PHP 4 >= 4.0.3, PHP 5)
ftp_exec — Żąda wykonanie polecenia przez serwer FTP
Opis
bool ftp_exec
( resource $strumień_ftp
, string $polecenie
)
Wysyła żądanie SITE EXEC polecenie do serwera FTP.
Parametry
- strumień_ftp
-
Identyfikator połączenia z serwerem FTP.
- polecenie
-
Polecenie do wykonania.
Zwracane wartości
Zwraca TRUE jeśli polecenie zostało pomyślnie wykonane (to znaczy serwer zwrócił kod 200). W przeciwnym przypadku zwracana jest wartość FALSE.
Przykłady
Przykład #1 Przykład użycia ftp_exec()
<?php
// przygotowanie polecenia
$polecenie = 'ls -al >files.txt';
// nawiązanie połączenia
$conn_id = ftp_connect($ftp_server);
// logowanie
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// próba wywołania polecenia
if (ftp_exec($conn_id, $polecenie)) {
echo "$polecenie wykonane pomyślnie\n";
} else {
echo "Nie można wykonać polecenia $polecenie\n";
}
// zamknięcie połączenia
ftp_close($conn_id);
?>
ftp_exec
chris dot pittman at sonopress dot com
15-Sep-2005 01:34
15-Sep-2005 01:34
sam at totallydigital dot co dot nz
16-Dec-2003 09:34
16-Dec-2003 09:34
A word of caution, execution via FTP isn't very widely supported. Check that it works on the servers that you intend to connect to before you start coding something that requires this.
