Foros del Web » Programando para Internet » PHP »

rutas absolutas a mis archivos

Estas en el tema de rutas absolutas a mis archivos en el foro de PHP en Foros del Web. Estoy haciendo una aplicacion en la k se puden descargar archivos del servidor donde tengo alojado mi sitio web. Por lo que estube mirando en ...
  #1 (permalink)  
Antiguo 10/10/2003, 07:11
Avatar de Orgueira  
Fecha de Ingreso: junio-2002
Ubicación: Coruña
Mensajes: 63
Antigüedad: 15 años, 6 meses
Puntos: 0
rutas absolutas a mis archivos

Estoy haciendo una aplicacion en la k se puden descargar archivos del servidor donde tengo alojado mi sitio web. Por lo que estube mirando en este foro lo mejor es colocarlos arriba del document_root.

Hice el phpinfo() y me dice que el document_root
es /home/personales/formcon001/web. En 'web' es donde tengo el index principal y las subcarpetas todas, pero via ftp puedo subir un nivel más, aqui es donde creé una carpeta y luego coloque los documentos "secretos" ( /home/personales/formcon001/doc/miarchivo.pdf).

Bien pues desde php no soy capaz de acceder a esa carpeta. Utilizando /home/personales/formcon001/doc/miarchivo.pdf, la carpeta home la empieza a buscar de la carpeta en la que está el script para abajo. Tb probé ../../ etc , subir niveles y nunca subo del web. si pongo simplemente /miarchivo.pdf tb empieza en el web (evidentemente, porke es el raiz).

¿Alguien sabe como llegar hasta mis archivos via php?
  #2 (permalink)  
Antiguo 10/10/2003, 07:20
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

¿Que codigo usas? Porque no es lo mismo utilizarlo en un include() que en un header("Location"). En el include() puedes pasar ese valor porque el parametro es una ruta. Pero con el header("Location") no funciona porque el parametro debe ser una URL.

Asi que si pones el codigo que intentas ejecutar, podremos decirte por que no te funciona.

Saludos.

PD: Tambien revisa en el phpinfo el valor de open_basedir.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 10/10/2003, 08:13
Avatar de Orgueira  
Fecha de Ingreso: junio-2002
Ubicación: Coruña
Mensajes: 63
Antigüedad: 15 años, 6 meses
Puntos: 0
$dir = $HTTP_SERVER_VARS['DOCUMENT_ROOT'];

//aqui no se como poner

$filename=$dir . "../doc/" . "archivo.pdf";

$tarchivo=filesize($filename);
header("Content-Length: " . $tarchivo);
header("Content-Disposition: attachment; filename="."$filename");
header("Content-Type: text/txt");

$fp = fopen($filename,'rb');

este código pertenece al download.php que gestiona la descarga desde el servidor (no está completo pero si funciona con archivos en las carpetas del sitio).
  #4 (permalink)  
Antiguo 10/10/2003, 08:17
Avatar de Orgueira  
Fecha de Ingreso: junio-2002
Ubicación: Coruña
Mensajes: 63
Antigüedad: 15 años, 6 meses
Puntos: 0
Por cierto en open_basedir está a "no value", me suena k no va a poder ser ...
  #5 (permalink)  
Antiguo 10/10/2003, 08:23
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
¿Has probado a poner directamente la ruta, sin usar variables? Ademas, prueba ha hacer un echo de las variables para ver que valores toman.

Y mira si te sirve realpath() (http://www.php.net/manual/en/function.realpath.php), en el caso de usar '..'.

Y si el open_basedir esta a no value, es buena noticia. Esa directiva sirve para limitar a que directorios puede acceder PHP.

Y revisa el valor que devuelve DOCUMENT_ROOT, no vaya a ser que no termine en /

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 10/10/2003, 18:13
Avatar de Orgueira  
Fecha de Ingreso: junio-2002
Ubicación: Coruña
Mensajes: 63
Antigüedad: 15 años, 6 meses
Puntos: 0
a ver si va a ser eso ...

Si, el document_root es /home/personales/formcon001/web sin la barra del final. Donde metí la pata?

Aunque me diga eso, por ftp puedo subir hasta 'formcon001' y alli veo la carpeta 'web' donde está todo el sitio web
  #7 (permalink)  
Antiguo 11/10/2003, 10:35
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Supongo que entonces sería:

$filename=$dir . "/doc/" . "archivo.pdf";

Quitando los dos puntitos al lado del doc
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #8 (permalink)  
Antiguo 11/10/2003, 11:58
Avatar de Orgueira  
Fecha de Ingreso: junio-2002
Ubicación: Coruña
Mensajes: 63
Antigüedad: 15 años, 6 meses
Puntos: 0
Con los dos puntos intentaba subir un nivel pero no me sube mas arriba de web, por eso estoy mosqueado. Y si no se los pongo pues empieza en web/doc y yo el doc la tengo al mismo nivel del web.
  #9 (permalink)  
Antiguo 11/10/2003, 13:29
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 8 meses
Puntos: 1
po lo que leo es "doc" lo tienes en la parte oculta del servidor en este caso el $HTTP_SERVER_VARS['DOCUMENT_ROOT']; pues te da el path del directorio publico.

Prueba ha dar la variable dir de esta manera

$dir="/home/personales/formcon001"

asi tiens la ruta a tu file asi
$filename=$dir . "/doc/archivo.pdf";

espero que te sirva
  #10 (permalink)  
Antiguo 11/10/2003, 14:11
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si DOCUMENT_ROOT no tiene el / al final, lo que le concatenes debe empezar con el /. Asi tendrias:
Código PHP:
$dir $HTTP_SERVER_VARS['DOCUMENT_ROOT'];

//aqui no se como poner

$filename=$dir "/../doc/" "archivo.pdf"
Asi puedes usar la variable DOCUMENT_ROOT para no cambiar el codigo si cambias de hosting.

Saludos.

PD: En este caso podrias usar real_path() para eliminar los .. de la cadena.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 11/10/2003, 16:12
Avatar de Orgueira  
Fecha de Ingreso: junio-2002
Ubicación: Coruña
Mensajes: 63
Antigüedad: 15 años, 6 meses
Puntos: 0
Efectivamente

Correcto, era ese detalle de la dichosa '/'. Ahora me va todo ok.
Gracias Josemi por guiarme por el camino correcto en el mundo de los paths.

Thanks.-
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 08:38.