Foros del Web » Programando para Internet » PHP »

Problema de Upload con php4 y RedHat Enterprise 4

Estas en el tema de Problema de Upload con php4 y RedHat Enterprise 4 en el foro de PHP en Foros del Web. Hola atodos espero me puedan ayudar, yo tengo un sistema que hace upload con el comando copy de php, funcionaba corectamente en debian, pero cuando ...
  #1 (permalink)  
Antiguo 24/07/2006, 11:42
 
Fecha de Ingreso: agosto-2004
Mensajes: 50
Antigüedad: 13 años, 4 meses
Puntos: 0
Problema de Upload con php4 y RedHat Enterprise 4

Hola atodos espero me puedan ayudar, yo tengo un sistema que hace upload con el comando copy de php, funcionaba corectamente en debian, pero cuando migre todo esto a red hat enterprise 4 no funciona el upload pese a que en el php.ini esta en ON y todas las carpetas y el archivo estan con perniso 777, siempre sale el error:
Warning:copy(/home/jesus/text.txt): failed to open stream: Permission denied in /var/www/html/pru.php on line 2
el escript es el siguiente:
Código PHP:
<? copy("/home/jesus/text.txt","/home/jesus/temp/text.txt"?>
Por favor alguine me puede decir que esta mal, o si necesito instalar algo adicional para que funcione correctamente, se los voy a agradecer.

Saludos,
  #2 (permalink)  
Antiguo 24/07/2006, 12:17
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 14 años, 5 meses
Puntos: 0
Hmm asegurate de revisar el directorio temp que tenga los permisos adecuados para el usuario www, el error es de permisos nada mas.
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #3 (permalink)  
Antiguo 24/07/2006, 12:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si estás haciendo un "upload" de archivos .. deberías estar accediendo al archivo (de nombre) temporal que PHP usa al subir tus archivos en:

$_FILES['como_se_llame_el_campo_file_de_tu_formulario']['tmp_name']

Y usar la función move_uploaded_file() que es la función autorizada para hacer ese movimiento.

Revisa la documentación oficial de PHP al respecto:
http://www.php.net/manual/en/features.file-upload.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 24/07/2006, 17:49
 
Fecha de Ingreso: agosto-2004
Mensajes: 50
Antigüedad: 13 años, 4 meses
Puntos: 0
Hola Cluster : sabes aplique $_FILE[] y hay algo curioso, encontre un ejemplo con un upload de un archivo tipo gif, y si lo carga pero, lo carga en la ruta donde esta el php, bueno como se ejecuto ya no importaba la ruta donde se guarde en el servidor, pero ahora cuando cambio cambie el tipo de archivo a csv para que validara, sale error de carga, trate con otros formatos y nada solo acepta gif, habra alguna configuracion en el php.ini, que esta restringiendo esto?

Espero me puedas ayudar

Gracias por el apoyo
HOla: andinistas
Te comento que todas las carpetas y archivos involucrados tienen permiso 777, creo que ya no es problema de permiso de ese tipo.
  #5 (permalink)  
Antiguo 24/07/2006, 19:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por rivert
Hola Cluster : sabes aplique $_FILE[] y hay algo curioso, encontre un ejemplo con un upload de un archivo tipo gif, y si lo carga pero, lo carga en la ruta donde esta el php, bueno como se ejecuto ya no importaba la ruta donde se guarde en el servidor, pero ahora cuando cambio cambie el tipo de archivo a csv para que validara, sale error de carga, trate con otros formatos y nada solo acepta gif, habra alguna configuracion en el php.ini, que esta restringiendo esto?

Espero me puedas ayudar

Gracias por el apoyo
HOla: andinistas
Te comento que todas las carpetas y archivos involucrados tienen permiso 777, creo que ya no es problema de permiso de ese tipo.
Si indicas el còdigo que usas será lo ideal, también el tamaño de tus archivos que subes (pues PHP impone por configuración al igual que tu servidor HTTP restricciones al respecto).

La función "move_uploaded_file()" es como un "copy()" simple .. tu, en el 2º parámetro es donde indicas el nombre y ruta donde debe quedar tu archivo. Recueda (o para que sepas), PHP cuando subes un archivo por médio de este (HTTP) deja el archivo en un lugar temporal (lo indica php.ini en su directiva: upload_tmp_dir = ....) para luego "moverlo" a su destino definitivo. Dicha función se usa en lugar de "copy()" por qué tiene permisos para "salir" a ese directorio a tomar el archivo en cuestión que estás subiendo (y no otros).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 31/07/2006, 09:15
 
Fecha de Ingreso: agosto-2004
Mensajes: 50
Antigüedad: 13 años, 4 meses
Puntos: 0
Hola Cluster:
El ejemplo ya funciona correctamente pero sigo teniendo el problema de que solo sube al directorio donde se encuentra en php, cuando le pongo una ruta de destino es donde sale en mismo error de siempre.
Cita:
failed to open stream: Permission denied in
El mismo ejemplo tambien lo corro en Debian y no tengo problemas de rutas yo puedo ponerle cualquier ruta y no sale problemas...aparentemente se tiene que configurar algo, pero no se que será..!!!
O es que el RedHat tiene otras politicas sobre este tema.
Espero tus comentarios, muchas gracias
  #7 (permalink)  
Antiguo 31/07/2006, 15:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por rivert
Hola Cluster:
El ejemplo ya funciona correctamente pero sigo teniendo el problema de que solo sube al directorio donde se encuentra en php, cuando le pongo una ruta de destino es donde sale en mismo error de siempre.


El mismo ejemplo tambien lo corro en Debian y no tengo problemas de rutas yo puedo ponerle cualquier ruta y no sale problemas...aparentemente se tiene que configurar algo, pero no se que será..!!!
O es que el RedHat tiene otras politicas sobre este tema.
Espero tus comentarios, muchas gracias
Pero como indicas esas rutas? .. Debes indicar una ruta absoluta completa.

Que función usas para "copiar" el archivo? .. debes usar move_uploaded_file()
Revisa los permisos de escritura del directorio destino donde pretendes copiar tu archivo. ¿Ese directorio queda bajo tu "document root" de tu servidor? (o está fuera de él .. )

Indica el código que usas completo.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 31/07/2006, 16:52
 
Fecha de Ingreso: agosto-2004
Mensajes: 50
Antigüedad: 13 años, 4 meses
Puntos: 0
Hola Cluster:
Todos directorios y archivos tiene permisos 777
Te envio el codigo para que le deas una chequeada, te comento tambien que el mismo script funciona sin problemas en linux Debian.

Código HTML:
<body leftmargin="0" topmargin="0">
<form action="upload_proceso1.php?idsess=<? echo $idsess ?>" method="post" enctype="multipart/form-data"> 
<table border="1" align="center" cellpadding="0" cellspacing="0"><CAPTION>&nbsp;
</CAPTION>
  <tr><td>
<table align="center">
  <tr>
    <td ><strong>Seleccione Archivo  </strong></td>
  </tr>
  <tr>
    <td><input name="userfile" type="file" class="texto_pq"></td>
  </tr>
  <tr>
    <td ></td>
  </tr>
  <tr>
    <td ></td>
  </tr>
  <tr>
  <td>
    <div align="center">
      <input type="submit" class="texto_pq" value="Enviar" style="cursor:hand">
      </div></td>
  </tr>

</table>
</td>
</tr>
</table>
</form>
</body> 
Y el php es
Código PHP:
    //datos del arhivo 
    
$nombre_archivo $HTTP_POST_FILES['userfile']['name']; 
    
$tipo_archivo $HTTP_POST_FILES['userfile']['type']; 
    
$tamano_archivo $HTTP_POST_FILES['userfile']['size']; 
    
//compruebo si las características del archivo son las que deseo 
    
$exten=substr($nombre_archivo,-3);
    if (
$exten =='csv' && $tamano_archivo 2000000){ 
        if (
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], "/home/jesus/$nombre_archivo")){ 
            echo 
"<table align=center border=0 >";
            echo 
"<tr><td>-El archivo ha sido cargado correctamente</td></tr>"
           echo 
"</table>"
        }else{ 
           echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse."
        } 
    }else{ 
        echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br>
        <table><tr><td>
          <li>Solo se permiten archivos de tipo CSV<br>
          <li>se permiten archivos de 2Mb como máximo.<br>
          <li>Nombre archivo-> $nombre_archivo <br>
          <li>Tipo-> $tipo_archivo<br>
          <li>Tamaño -> $tamano_archivo
          </td></tr></table>"

    } 
  #9 (permalink)  
Antiguo 31/07/2006, 20:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero ese "/home/jesus/" donde pretendes mover el archivo està bajo el "Document Root" de tu servidor HTTP (o servidor virtual definido).

Lo màs probable es que NO sea así, .. en ese caso restricciones de PHP como: open_base_dir, "safe mode" y algunas más (por lo demàs seguras) hacen que NO puedas acceder a archivos -fuera- de tu "Document Root" o directorios definidos en esas directivas (php.ini).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 01/08/2006, 10:56
 
Fecha de Ingreso: agosto-2004
Mensajes: 50
Antigüedad: 13 años, 4 meses
Puntos: 0
Hola Cluster:
/home/jesus esta fuera la ruta de Document Root esta en /var/www/html.

ME fije en php.ini y los paramentros son:

open_basedir = no value
safe_mode = Off
safe_mode_exec_dir = no value
safe_mode_gid = Off
safe_mode_include_dir = no value

Todos estos parametros estan igual a la pc con debian que no tiene este problema.

Crees que uno de ellos tengo este problema?
  #11 (permalink)  
Antiguo 01/08/2006, 11:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y en ese servidor usas SUexec? (donde se valida el UID y el GID del directorio/archivo a acceder).

Realmente no deberías hacer con PHP lo que pretendes hacer .. NO es nada seguro .. Fijate que un "despiste" de tu programación podría hacer que un usuario por médio de algún script/aplicación "mál" diseñada acceder a archivos comprometedores del servidor.

Te recomiendo una cosa:

Mueve tu archivo con move_uploaded_file() hacia un directorio bajo tu "document root" y de ahí lo copias con copy() hacia tu /home/.... (y si no lo quieres más en tu "directorio temporal" lo borras con unlink() ..). Pruebalo a ver que tal.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 21:39.