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 — Solicita la ejecución de un comando en el servidor FTP
Descripción
bool ftp_exec
( resource $secuencia_ftp
, string $comando
)
Envía una petición SITE EXEC comando al servidor FTP.
Lista de parámetros
- secuencia_ftp
-
El identificador de enlace de la conexión FTP.
- comando
-
El comando a ejecutar.
Valores retornados
Devuelve TRUE si el comando tuvo éxito (el servidor envía el código de respuesta: 200); o FALSE de lo contrario.
Ejemplos
Example #1 Ejemplo de ftp_exec()
<?php
// inicialización de variable
$comando = 'ls -al >archivos.txt';
// preparar la conexión básica
$id_con = ftp_connect($servidor_ftp);
// iniciar sesión con nombre de usuario y contraseña
$resultado_login = ftp_login($id_con, $nombre_usuario_ftp, $contrasenya_usuario_ftp);
// ejecutar comando
if (ftp_exec($id_con, $comando)) {
echo "$comando fue ejecutado satisfactoriamente\n";
} else {
echo "no se pudo ejecutar $comando\n";
}
// cerrar la conexión
ftp_close($id_con);
?>
ftp_exec
chris dot pittman at sonopress dot com
15-Sep-2005 06:34
15-Sep-2005 06:34
sam at totallydigital dot co dot nz
16-Dec-2003 01:34
16-Dec-2003 01: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.
