Foros del Web » Programando para Internet » PHP »

no puedo subir archivos

Estas en el tema de no puedo subir archivos en el foro de PHP en Foros del Web. Hola a todos, me pregunta es: ¿cómo puedo saber si esta prohibido subir archivos al servidor? porque he tratado de subir imagenes por medio de ...
  #1 (permalink)  
Antiguo 16/06/2008, 11:26
Avatar de erichfrom  
Fecha de Ingreso: octubre-2004
Mensajes: 148
Antigüedad: 20 años
Puntos: 1
no puedo subir archivos

Hola a todos, me pregunta es: ¿cómo puedo saber si esta prohibido subir archivos
al servidor? porque he tratado de subir imagenes por medio de un formulario y el siguiente código

move_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'], $name);

y no pasa nada. Lo cambie por este

move_uploaded_file($_FILES['archivo']['tmp_name'], $name);

y tampoco. Lo raro es que en mi computadora si se copian los archivos.

De lo que si estoy seguro es que el problema no es:
-permiso en las carpetas
-enctype="multipart/form-data"
-servidor saturado de archivos
-tipo de archivo no aceptado
  #2 (permalink)  
Antiguo 16/06/2008, 11:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: no puedo subir archivos

Hola erichfrom,

Revisa el valor de $_FILES['archivo']['error'] y busca en el manual de PHP el código numérico del error aquí: http://www.php.net/manual/en/feature...oad.errors.php

Saludos.
  #3 (permalink)  
Antiguo 16/06/2008, 11:32
Avatar de erichfrom  
Fecha de Ingreso: octubre-2004
Mensajes: 148
Antigüedad: 20 años
Puntos: 1
Respuesta: no puedo subir archivos

Hola, muchas gracias por respnder de inmediato:
Me sale el error 6 ¿qué puedo hacer?

Value: 6; Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.
  #4 (permalink)  
Antiguo 16/06/2008, 12:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: no puedo subir archivos

Configura correctamente tu php.ini asegurate que el PATH para los archivos temporales exista y este correcto.

Saludos.
  #5 (permalink)  
Antiguo 16/06/2008, 18:50
 
Fecha de Ingreso: marzo-2007
Ubicación: En El salvador
Mensajes: 78
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: no puedo subir archivos

Yo tengo este mismo problema, estoy haciendo un sitio para una iglesia y tengo acceso a su hosting, la cuestión es que como tu dices que tengo que configurar el php.ini, en este caso del hosting de la iglesia, estuve viendo su configuración y es la siguiente.

Paths and Directories include_path Windows: "\path1;\path2" .:/usr/lib/php:/usr/local/lib/php
Esto querra decir que está configurado correctamente?
  #6 (permalink)  
Antiguo 16/06/2008, 18:58
Avatar de erichfrom  
Fecha de Ingreso: octubre-2004
Mensajes: 148
Antigüedad: 20 años
Puntos: 1
Respuesta: no puedo subir archivos

¿Es posible que configure el php.ini si el servidor es rentado?
¿cómo puedo hacerlo?
  #7 (permalink)  
Antiguo 17/06/2008, 09:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: no puedo subir archivos

@0skar:

El include_path es diferente, debes de configurar upload_tmp_dir.

@erichfrom:

Sí es posible, siempre y cuando te den acceso root.

Saludos.
  #8 (permalink)  
Antiguo 17/06/2008, 11:46
Avatar de erichfrom  
Fecha de Ingreso: octubre-2004
Mensajes: 148
Antigüedad: 20 años
Puntos: 1
Respuesta: no puedo subir archivos

Bien, pues no tengo sufientes permisos como para modificar el php.ini

hay otra forma de lograr que se haga la configuración, he visto que con hatches?

o mejor le pido al administrador que modifique el php.ini?
  #9 (permalink)  
Antiguo 17/06/2008, 11:57
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 9 meses
Puntos: 52
Respuesta: no puedo subir archivos

como quieras, con un .htaccess
o diciendoselo al administrador.

Un saludo
  #10 (permalink)  
Antiguo 17/06/2008, 12:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: no puedo subir archivos

El path temporal no se puede modificar con el .htaccess, es forzoso que contactes al administrador de tu sitio.

Saludos.
  #11 (permalink)  
Antiguo 18/06/2008, 12:00
 
Fecha de Ingreso: marzo-2007
Ubicación: En El salvador
Mensajes: 78
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: no puedo subir archivos

Bueno yo estuve revisando la configuración del hosting donde debo de subir archivos y es la siguiente:

Language Options asp_tags Allow ASP-style <% %> tags. Off File Uploads file_uploads Whether to allow HTTP file uploads. On Paths and Directories include_path Windows: "\path1;\path2" .:/usr/lib/php:/usr/local/lib/php Resource Limits max_execution_time
30 Resource Limits max_input_time
60 Resource Limits memory_limit Maximum amount of memory a script may consume (8MB) 32M Data Handling register_globals You should do your best to write your scripts so that they do not require register_globals to be on; Using form variables as globals can easily lead to possible security problems, if the code is not very well thought of. Off Language Options safe_mode
Off main session.save_path where N is an integer. Instead of storing all the session files in /path, what this will do is use subdirectories N-levels deep, and store the session data in those directories. This is useful if you or your OS have problems with lots of files in one directory, and is a more efficient layout for servers that handle lots of sessions. NOTE 1: PHP will not create this directory structure automatically. You can use the script in the ext/session dir for that purpose. NOTE 2: See the section on garbage collection below if you choose to use subdirectories for session storage /tmp File Uploads upload_max_filesize Maximum allowed size for uploaded files. 24M
Disculpen que pongo tanta info pero es que quisiera que viesen todos los datos necesarios a fin de poder solucionar mi problema. Por lo que veo tengo habilitado los derechos para poder subir archivos y que el limite máximo es de 24mb. He intentado varias cosas y aun así no me funciona, lo peor es que veo que en efecto el archivo si es subido en la carpeta temporal del servidor porque para comprobar he puesto que imprima valores como la ubicacion temporal del archivo, el tamaño, el nombre y si este tiene algun error y me imprime todo bien y en lo del error me imprime 0 lo que indica que no tiene ningun error, pero al ejecutar la funcion move_uploaded_file() pues me retorna false. Habrá algun modo como de saber especificamente la causa por la cual la funcion no se lleva a cabo, algo como un mensaje de error puntual o algo por el estilo? Bueno para uqe lo vean aqui les dejo el código de pag1.html la cual tiene el control para subir el archivo y pag2.php para subir el archivo.

pag1.html

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>USubir un archivo</title>
</head>

<body>
<form enctype="multipart/form-data" action="pag2.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="100000000000">
Send this file: <input name="uploadFile" id="uploadFile" type="file">
<input type="submit" value="Send File">
</form>


</body>
</html>
pag2.php
Aqui quiero recalcar, que para probar he estado intentando subir archivos como imagenes jpg de unos 100kb y archivos pequeñitos, tambien que en el segundo parámetro de la funcion move_uploaded_file() que es como la ubicación en el servidor donde se guardará el archivo, yo pretendo guardarlo en una carpeta llamada uploads que esta en el mismo nivel que el script pag2.php, y ahi he probado de varias maneras, poniendo "/uploads/", "uploads/", "/uploads", "uploads" y tambien "http://www.dominio.org.sv/uploads/" y no me ha funcionado de ninguna manera.

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>


<body>

<?php 
// In PHP 4.1.0 or later, $_FILES should be used instead of $HTTP_POST_FILES.
if (is_uploaded_file($_FILES['uploadFile']['tmp_name']))
{
echo 
"el archivo esta en el server";
}
else
{
echo 
"el archivo no se pudo subir";
}

echo 
$_FILES['uploadFile']['tmp_name'] . '<br>';
echo 
$_FILES['uploadFile']['name'] . '<br>';
echo 
$_FILES['uploadFile']['size'] . '<br>';
echo 
$_FILES['uploadFile']['error'] . '<br>';
/* if (is_uploaded_file($HTTP_POST_FILES['uploadFile']['tmp_name'])) {
    copy($HTTP_POST_FILES['uploadFile']['tmp_name'], "http://www.comunidadcristiana.org.sv/uploads/");
} else {
    echo "Possible file upload attack. Filename: " . $HTTP_POST_FILES['uploadFile']['name'];
} */
/* ...or... */
if(move_uploaded_file($HTTP_POST_FILES['uploadFile']['tmp_name'], "uploads/"))
{
echo 
"El archivo se subió correctamente";
}
else
{
echo 
"El archivo no se pudo subir";
}
?>

</body>
</html>
Por ultimo, aqui les dejo lo que obtengo como muestra, de un archivito que intente subir, como veran imprime todo lo del archivo ya cuando está en la carpeta temporal en el servidor.

el archivo esta en el server/tmp/phpZN4Ug9Y
application.ini
2025
0

Espero que puedan ayudarme.

Última edición por 0skar; 18/06/2008 a las 12:01 Razón: Modificar el post para mostrar unos resultados
  #12 (permalink)  
Antiguo 18/06/2008, 12:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: no puedo subir archivos

Prueba hacer algo así:
Código PHP:
error_reporting(E_ALL);
ob_start();
$result move_uploaded_file($HTTP_POST_FILES['uploadFile']['tmp_name'], "uploads/");
$error ob_get_clean();
if(
$result)
{
echo 
"El archivo se subió correctamente";
}
else
{
echo 
"El archivo no se pudo subir, razon: $error";

Saludos.
  #13 (permalink)  
Antiguo 18/06/2008, 14:16
 
Fecha de Ingreso: marzo-2007
Ubicación: En El salvador
Mensajes: 78
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: no puedo subir archivos

Te agradezco mucho GatorV, en efecto lo hice y al final me arroja lo siguiente: (Incluyendo las lineas que me imprime el script)

el archivo esta en el server
Ubicacion temporal: /tmp/phpL8uvhs
Nombre del archivo: firefox.exe
Tamaño: 307712
C&oaute;digo de error: 0
El archivo no se pudo subir, razon:
Warning: move_uploaded_file(uploads/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home/comunid3/public_html/pag2.php on line 44

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpL8uvhs' to 'uploads/' in /home/comunid3/public_html/pag2.php on line 44

Lo que me deja en dud es el hecho de la primera linea de error donde dice Is a directory, y la cuestión es que ahi yo veo que cuando imprimo $_FILES['uploadFile']['tmp_name'] lo que imprime es un directorio, pero no lo imprime junto al nombre del archivo, es decir imprime algo como:

/tmp/phpL8uvhs

y yo creí que imprimiria algo como

/tmp/phpL8uvhs/archivo.algo

Entonces nose si por ahí estará el error, o si en la función move_uploaded_file() debo de concatenar a la ruta temporal del archivo el nombre del archivo, que es $_FILES['uploadFile']['name'], bueno de todos modos probé de esta manera tambien y esta vez no lo subió ni me arrojó un mensaje de error, me imagino que el error estará en

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpL8uvhs' to 'uploads/' in /home/comunid3/public_html/pag2.php on line 44
  #14 (permalink)  
Antiguo 18/06/2008, 14:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: no puedo subir archivos

Hola 0skar,

Así es, el error esta en tu move_uploaded_file ya que no puede leer el directorio a donde quieres mover el archivo, checa que la ruta sea correcta y tengas permisos de escritura.

Saludos.
  #15 (permalink)  
Antiguo 18/06/2008, 15:24
 
Fecha de Ingreso: marzo-2007
Ubicación: En El salvador
Mensajes: 78
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: no puedo subir archivos

No, no es eso, ya vi donde está el error:
La función move_uploaded_file() consta de 2 parámetros, uno que es la ruta del archivo temporal y la otra que es el destino, la cuestión que en el destino, debe de ir lo que es la ruta de destino incluyendo el nombre del nuevo archivo, y lo que he venido haciendo es que en destino he puesto lo siguiente:

uploads/

Cuando ha debido de ser de la siguiente manera:

uploads/archivo.algo

Muchas gracias por haberme ayudado y haberme tenido tanta paciencia.
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 14:08.