Obteniendo rutas en Php

Por el 18 de Octubre de 2007

en: Programacion

Hace unos días recibía un email de un usuario (Alex) en el que me preguntaba mi opinión acerca de como obtener la ruta completa de un fichero en PHP.

El tema se comenta en este hilo, paso a resumir:

Problema de rutas 1

Supongamos que tenemos como ruta del “public_html” esta ruta completa: “/home/tuweb/public_html/” y lo que queremos es un archivo que está dos subdirectorios abajo… ó lo que es lo mismo en el raiz.

La respuesta podría ser $_SERVER['DOCUMENT_ROOT'] (El directorio raíz de documentos bajo el que está siendo ejecutado el script actual), pero el autor del hilo descarta esta opción para ello nos da tres alternativas:

Alternativa 1:

str_replace(“subdir/subdir/miscript.php”, “”, __FILE__);

Alternativa 2:

dirname(dirname(__FILE__));

Alternativa 3:

realpath(“../../”);

__FILE__ nos devuelve el nombre del fichero utilizado en la ejecución del script.
str_replace:Sustitiye todas las apariciones de una cadena en otra
dirname: Devuelve el nombre del directorio de un ruta dada.
realpath: Devuelve el nombre de ruta absoluto simplificado.

¿Cúal de estas tres opciones os parecen mejor (limpia, rápida y óptima)?

Problema de rutas 2

Otro tema relacionado con las rutas de Php con el que me encontré hace poco tiempo es el siguiente:

Necesitaba obtener mediante una función la URL raiz a partir de una URL dada, voy a poner un ejemplo para facilitar un poco la comprensión del problema:

URL ofrecida: http://www.tufuncion.com/index.php
URL devuelta por función: http://www.tufuncion.com/

URL ofrecida: http://www.tufuncion.com/themes/tufuncion/logo.png
URL devuelta por función: http://www.tufuncion.com/

Esta es la función que finalmente utilicé:

function obtener_url_raiz($url) {
$parte1 = explode(“/”, $url);
$count = count($parte1);
$count_array = $count – 1;
if ($count >= 4) {
if ($parte1[$count_array] != ”) {
$path = str_replace($parte1[$count_array], ”, $url); }
else { $path = $url; }
} else {
if(substr($url,-1) != ‘/’) $url .= ‘/’; $path = $url; }
return $path;
}

4 Respuestas a Obteniendo rutas en Php

Avatar

Anónimo

18 de Octubre de 2007 a las 5:03 pm

Me alegra que volvais a tocar temas de PHP, hacia tiempo que no leia nada por aqui y se echaba de menos. Con respecto a este tema me ha convencido la solucion que dan en el foro, más en concreto la ultima respuesta del hilo. Aunque la verdad no se con que objetivo se puede llegar a plantear esta duda teniendo la constante DOCUMENT_ROOT.

Avatar

Anónimo

19 de Octubre de 2007 a las 2:10 pm

El problema de la constante DOCUMENT_ROOT es que muchos hosting la tienen definida como /, y no con la ruta de cada cuenta.

Saludos.

Avatar

Anónimo

1 de Noviembre de 2007 a las 3:54 pm

Problema de rutas 1:
Alternativa 2

Problema de rutas 2:
¿No seria mejor usar parse_url?

Avatar

Anónimo

27 de Noviembre de 2007 a las 5:20 pm

;;;;’

Dejar un comentario

Patrocinadores

¿Interesado en patrocinar TuFunción?

Suscripción

Primera División