Foros del Web » Programando para Internet » PHP »

Subida de archivo falla tras cambio de servidor

Estas en el tema de Subida de archivo falla tras cambio de servidor en el foro de PHP en Foros del Web. Buenas a tod@s, tengo el siguiente problema. Tengo un pequeño formulario para seleccionar un archivo y que este se suba al servidor que hasta ahora ...
  #1 (permalink)  
Antiguo 28/10/2016, 04:41
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Subida de archivo falla tras cambio de servidor

Buenas a tod@s, tengo el siguiente problema. Tengo un pequeño formulario para seleccionar un archivo y que este se suba al servidor que hasta ahora ha funcionado perfectamente. Voy a trasladar la página a un servidor nuevo (Windows Server 2012 con PHP 7.0.7) y al hacer pruebas he visto que ha dejado de funcionar dando el siguiente error:

Notice: Undefined variable: HTTP_POST_FILES in D:\Intranetweb\Serviciosonline\enlaces_extranet\su bir.php on line 9

El código es el siguiente:

Código PHP:
Ver original
  1. <?php
  2. $ruta = $_POST['ruta'] ;
  3. $nombre=$_POST['contador'] ;
  4. $tablon=$_POST['tablon'] ;
  5. $circu=$_POST['circu'] ;
  6. $N = 1; //Número de archivos a Subir
  7.  
  8. for($i=0; $i<$N; $i++) {
  9.     if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i])) {
  10.         $split_path = split("/", $HTTP_POST_FILES['userfile']['name'][$i]);
  11.         $split_path = end ($split_path);
  12.         $extension = split("[/.]", $split_path);
  13.        
  14.         if (end($extension) == "php" || end($extension) == "php3") {
  15.             echo "tipo de archivo invalido";
  16.        
  17.         } else {
  18.             $RUTA_UPLOADED = $ruta;
  19. //          echo $RUTA_UPLOADED;
  20.            
  21.             $NOMBRE_FILE = $split_path;
  22.            
  23.             if ($i==0) {
  24.                 if (end($extension) == "rar" || end($extension) == "docx" || end($extension) == "xlsx" || end($extension) == "pptx" || end($extension) == "zip" || end($extension) == "pdf" || end($extension) == "doc" || end($extension) == "xls" || end($extension) == "ppt" ) {
  25.                     $NOMBRE_FILE = $nombre . $extension;
  26.                 } else {
  27.                     header("Location: default.asp?tablon=1&error=2");
  28.                     die("");
  29.                 }
  30.         }
  31.         move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i], $RUTA_UPLOADED . $nombre . "." . end($extension));
  32.        
  33.         }
  34.     }
  35. }
  36. echo "subido";
  37. //header("Location: subido.asp?subido=1&circu=" . $circu . "&tablon=" . $tablon ."&contador=" . $nombre . "&ext=" . end($extension));
  38.  
  39. ?>

Y el error lo da justamente en la linea que pone if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i]))

Imagino que se deberá a algún cambio en las diferentes versiones de php, pero no se que debo poner para que vuelva a funcionar.

Salu2 y gracias por adelantado.
__________________
Vayamos por Partes :: Jack el Destripador
  #2 (permalink)  
Antiguo 28/10/2016, 05:02
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Subida de archivo falla tras cambio de servidor

Por lo que feo el HTTP_POST_FILES ha sido sustituido por _FILES a secas. Lo he cambiado en las dos líneas en las que aparece, y ahora y no me da error, pero tampoco me sube el archivo a la ruta que toca, no se si se queda en el limbo o que está pasando.
__________________
Vayamos por Partes :: Jack el Destripador
  #3 (permalink)  
Antiguo 28/10/2016, 06:19
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Subida de archivo falla tras cambio de servidor

Cita:
Iniciado por angel_dope Ver Mensaje
Por lo que feo el HTTP_POST_FILES ha sido sustituido por _FILES a secas. Lo he cambiado en las dos líneas en las que aparece, y ahora y no me da error, pero tampoco me sube el archivo a la ruta que toca, no se si se queda en el limbo o que está pasando.
Hola angel_dope,

No sé si te habrás dado cuenta, pero te aparece en 3 líneas, no en 2, y precisamente la última es la que te coloca el archivo donde debe...

Código PHP:
Ver original
  1. move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i], $RUTA_UPLOADED . $nombre . "." . end($extension));

Y sí, HTTP_POST_FILES quedó obsoleta a partir de la versión 4.1.0.

Espero que te sirva...
  #4 (permalink)  
Antiguo 28/10/2016, 07:17
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Subida de archivo falla tras cambio de servidor

Ya te aseguraste que el directorio donde subes los archivos tenga los permisos 775??
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #5 (permalink)  
Antiguo 02/11/2016, 01:32
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Subida de archivo falla tras cambio de servidor

Cita:
Iniciado por rbczgz Ver Mensaje
Hola angel_dope,

No sé si te habrás dado cuenta, pero te aparece en 3 líneas, no en 2, y precisamente la última es la que te coloca el archivo donde debe...

Código PHP:
Ver original
  1. move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i], $RUTA_UPLOADED . $nombre . "." . end($extension));

Y sí, HTTP_POST_FILES quedó obsoleta a partir de la versión 4.1.0.

Espero que te sirva...
Tienes razón, me faltaba un sitio por cambiar, pero sigue sin funcionar. Ahora está tal que así:

Código PHP:
Ver original
  1. $ruta = $_POST['ruta'] ;
  2. $nombre=$_POST['contador'] ;
  3. $tablon=$_POST['tablon'] ;
  4. $circu=$_POST['circu'] ;
  5.  
  6. $N = 1; //Número de archivos a Subir
  7.  
  8. for($i=0; $i<$N; $i++) {
  9.     if (is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) {
  10.         $split_path = split("/", $_FILES['userfile']['tmp_name'][$i]);
  11.         $split_path = end ($split_path);
  12.         $extension = split("[/.]", $split_path);
  13.        
  14.         if (end($extension) == "php" || end($extension) == "php3") {
  15.             echo "tipo de archivo invalido";
  16.        
  17.         } else {
  18.             $RUTA_UPLOADED = $ruta;
  19. //          echo $RUTA_UPLOADED;
  20.            
  21.             $NOMBRE_FILE = $split_path;
  22.            
  23.             if ($i==0) {
  24.                 if (end($extension) == "rar" || end($extension) == "docx" || end($extension) == "xlsx" || end($extension) == "pptx" || end($extension) == "zip" || end($extension) == "pdf" || end($extension) == "doc" || end($extension) == "xls" || end($extension) == "ppt" ) {
  25.                     $NOMBRE_FILE = $nombre . $extension;
  26.                 } else {
  27.                     header("Location: default.asp?tablon=1&error=2");
  28.                     die("");
  29.                 }
  30.         }
  31.         move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $RUTA_UPLOADED . $nombre . "." . end($extension));
  32.        
  33.         }
  34.     }
  35. }
  36. echo "subido";

sin embargo ahora me da este otro error:

Fatal error: Uncaught Error: Call to undefined function split() in D:\Intranetweb\Serviciosonline\enlaces_extranet\su bir.php:11 Stack trace: #0 {main} thrown in D:\Intranetweb\Serviciosonline\enlaces_extranet\su bir.php on line 11 que es donde se hace el primer split.

Cita:
Iniciado por petit89 Ver Mensaje
Ya te aseguraste que el directorio donde subes los archivos tenga los permisos 775??
Si, los permisos de la carpeta están correctos. De todas formas, si no fuese así, imagino que me daría un error de permiso denegado a la hora de mover el archivo, no?
__________________
Vayamos por Partes :: Jack el Destripador
  #6 (permalink)  
Antiguo 02/11/2016, 02:00
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Subida de archivo falla tras cambio de servidor

La función split esta obsoleta y ha sido eliminada en php 7, las alternativas son: preg_split(), explode() y str_split().

Echale un vistazo al manual para ver cual te conviene más.
__________________
Unset($vida['malRollo']);
  #7 (permalink)  
Antiguo 02/11/2016, 02:04
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Subida de archivo falla tras cambio de servidor

Pues si que estamos bien... se nota que esto llevaba años sin tocarse??
__________________
Vayamos por Partes :: Jack el Destripador
  #8 (permalink)  
Antiguo 02/11/2016, 02:26
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Subida de archivo falla tras cambio de servidor

Perfecto, con explode ya funciona todo como toca de nuevo, muchas gracias por la ayuda!! Dejo como ha quedado el código, por si a alguien le pasa lo mismo más adelante:

Código PHP:
Ver original
  1. <?php
  2. $ruta = $_POST['ruta'] ;
  3. $nombre=$_POST['contador'] ;
  4. $tablon=$_POST['tablon'] ;
  5. $circu=$_POST['circu'] ;
  6.  
  7. $N = 1; //Número de archivos a Subir
  8.  
  9. for($i=0; $i<$N; $i++) {
  10.     if (is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) {
  11.         $split_path = explode("/", $_FILES['userfile']['name'][$i]);
  12.         $split_path = end($split_path);
  13.         $extension = explode(".", $split_path);
  14.         if (end($extension) == "php" || end($extension) == "php3") {
  15.             echo "tipo de archivo invalido";
  16.        
  17.         } else {
  18.             $RUTA_UPLOADED = $ruta;    
  19.             $NOMBRE_FILE = $split_path;
  20.            
  21.             if ($i==0) {
  22.                 if (end($extension) == "rar" || end($extension) == "docx" || end($extension) == "xlsx" || end($extension) == "pptx" || end($extension) == "zip" || end($extension) == "pdf" || end($extension) == "doc" || end($extension) == "xls" || end($extension) == "ppt" ) {
  23.                     $NOMBRE_FILE = $nombre . end($extension);
  24.                 } else {
  25.                     header("Location: default.asp?tablon=1&error=2");
  26.                     die("");
  27.                 }
  28.         }
  29.         move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $RUTA_UPLOADED . $nombre . "." . end($extension));
  30.        
  31.         }
  32.     }
  33. }
  34. //echo "subido";
  35. header("Location: subido.asp?subido=1&circu=" . $circu . "&tablon=" . $tablon ."&contador=" . $nombre . "&ext=" . end($extension));
  36.  
  37. ?>
__________________
Vayamos por Partes :: Jack el Destripador

Etiquetas: falla, formulario, servidor, subida, tras, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:36.