Subir un archivo por FTP con PHP

Publicado por María Paulina Ramírez Vásquez domingo, 22 de noviembre de 2009 10:52 p. m.

Para muchos es difícil subir archivos a través de la función copy de PHP debido a ciertas restricciones en los directorios de los servidores de hosting (regularmente los gratuitos) que no permiten este tipo de instrucciones en dichos servidores. Como alternativa podemos usar la extensión php_curl de PHP para hacer subidas a través del protocolo FTP.

A continuación un ejemplo de cómo podemos subir un archivo por FTP con PHP. Antes que nada, debemos activar la extensión php_curl.

Primero, crearemos el formulario por donde se pedirá el archivo a subir:

<form action="subir-archivo.php" enctype="multipart/form-data" id="form1" method="post" name="form1">
Busque su archivo por aquí: <input id="archivo" name="archivo" type="file" />
</form>

En el formulario anterior, por medio del action, hacemos llamado al archivo "subir-archivo.php" el cual contiene las siguientes líneas de código:

$tmpfile = $_FILES['archivo']['tmp_name'];
$tmpname = $_FILES['archivo']['name'];
$ftpuser = "usuario_ftp";
$ftppass = "contraseña_ftp";
$ftppath = "ejemplo.com/directorio_ejemplo/"; // aquí se coloca la URL del directorio donde se subirán los archivos
$ftpurl = "ftp://".$ftpuser.":".$ftppass."@".$ftppath;
        
if ($c != "") {
$fp = fopen($tmpfile, 'r');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $ftpurl.$tmpname);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($tmpfile));
curl_exec($ch);
$error = curl_errno($ch);
curl_close ($ch);
if ($error == 0) {
  $rpta = 'Archido subido correctamente.';
}
else {
  $rpta = 'Error al subir el archivo.';
  $err=1;
}


Con esto, podremos subir un archivo por FTP usando la extensión php_curl de PHP.