Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Cómo puedo almacenar el directorio raíz de mi sitio en localhost con WampServer 2.2?

Estas en el tema de ¿Cómo puedo almacenar el directorio raíz de mi sitio en localhost con WampServer 2.2? en el foro de PHP en Foros del Web. ¡Buenas tardes! Pues eso... Tengo WampServer 2.2 instalado en Windows 7. En el directorio www tengo varias carpetas, cada cual con su proyecto. Esto se ...
  #1 (permalink)  
Antiguo 20/08/2014, 04:34
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 24
Antigüedad: 10 años, 4 meses
Puntos: 1
Pregunta ¿Cómo puedo almacenar el directorio raíz de mi sitio en localhost con WampServer 2.2?

¡Buenas tardes!

Pues eso... Tengo WampServer 2.2 instalado en Windows 7. En el directorio www tengo varias carpetas, cada cual con su proyecto. Esto se suele traducir, ya en localhost, como: localhost/proyecto1/, localhost/proyecto2/, etc...

Pues bien, quisiera que "localhost/proyecto1" sea considerada la raíz de ese proyecto. Con $_SERVER['DOCUMENT_ROOT'] me dice que la raíz es: "C:/wamp/www/". Y con $_SERVER['PHP_SELF'] me dice que es: "/proyecto1/index.php". No hace referencia a localhost ni a wamp...
¿Cómo puedo hacer para crear una constante, una única vez, que sirva para que la raíz del sitio sea "localhost/proyecto1/" (sin el index.php incluido en su definición)

Es para los includes. Tengo archivos en include que acceden con facilidad desde la carpeta raíz localhost/proyecto1/, ya sea el index u otros.

Pero otros están en otras subcarpetas y algunos de los includes tendría que reconfigurarlos y tendría que hacer varias copias de alguno de ello, porque incluyen rutas relativas.

Y quiero que incluyan rutas absolutas, para no tener que hacer múltiples copias, casi idénticas, para algunas de esas subsecciones... Es decir, quiero que para incluir cada archivo del include, se le llame desde la sección que se le llame, se vaya a la raíz web de mi proyecto (no el de "c:...", sino del localhost, porque de lo contrario no me muestra nada), se meta en la carpeta includes (en mi caso, requires) y coja el archivo que se requiere.

Para explicarlo más claro, lo tengo así: en requires está configuración.php que es el que llama al resto de cosas a incluir (funciones, configuración de conexión de base de datos, head, cabecera, navegación, sección, pie). El index y demás secciones y subsecciones, llaman a este archivo desde donde estén. Lo único que tiene dicho index o cualquier otra sección es:

Código PHP:
<?php
// Inicio de sesión para poder pasarnos variables de sesión entre páginas.
session_start();
// Variables de la página de inicio. De momento sólo es una:
$seccion "inicio"// Título de la sección en la que se encuentra actualmente el usuario. En minúsculas. Así, configuracion.php llamará al archivo que contendrá la parte central de ese archivo, que será la que corresponda con esa sección concreta. En este caso, $seccion.".php", equivalente a "inicio.php".
// Elementos requeridos.
require ("requires/configuracion.php"); // Eso si está en la raíz. Si está en otra carpeta, sería "../requires/configuracion.php" 
?>
¿Cómo creo una constante que me sirva? Traté de crear una normal sólo con texto, así:
Código PHP:
$raiz "localhost/proyecto1/"
y al poner:
Código PHP:
require($raiz."requires/configuracion.php"); 
me dice que:

Cita:
Warning: require(localhost/proyecto1/requires/configuracion.php) [function.require]: failed to open stream: No such file or directory in C:\wamp\www\proyecto1\index.php on line
y...

Cita:
Fatal error: require() [function.require]: Failed opening required 'localhost/proyecto1/requires/configuracion.php' (include_path='.;C:\php\pear') in C:\wamp\www\proyecto1\index.php on line

Última edición por LordYo; 20/08/2014 a las 04:43 Razón: Correcciones menores...
  #2 (permalink)  
Antiguo 20/08/2014, 06:41
 
Fecha de Ingreso: agosto-2014
Mensajes: 10
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: ¿Cómo puedo almacenar el directorio raíz de mi sitio en localhost con Wamp

Buenas! para crear una constante en tu Index que te sirva como referencia a la ruta del proyecto prueba con:
Código PHP:
Ver original
  1. define('RAIZ', realpath(dirname(__FILE__)) . '/');
  2. require (RAIZ . 'require/configuracion.php');
Las constantes las creas con "define" vale, y ahora simplemente en tu index que intuyo que está en la raíz, pega esa línea que declara la constante para que coja la ruta del proyecto.
  #3 (permalink)  
Antiguo 20/08/2014, 10:45
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 24
Antigüedad: 10 años, 4 meses
Puntos: 1
Pregunta Respuesta: ¿Cómo puedo almacenar el directorio raíz de mi sitio en localhost con Wamp

Cita:
Iniciado por Per0na Ver Mensaje
Buenas! para crear una constante en tu Index que te sirva como referencia a la ruta del proyecto prueba con:
Código PHP:
Ver original
  1. define('RAIZ', realpath(dirname(__FILE__)) . '/');
  2. require (RAIZ . 'require/configuracion.php');
Las constantes las creas con "define" vale, y ahora simplemente en tu index que intuyo que está en la raíz, pega esa línea que declara la constante para que coja la ruta del proyecto.
Lo he copiado tal cual lo de define y tanto en el index como en el configuracion.php he usado RAIZ."resto de la ruta" y trae todos los elementos correctamente. Pero al irme a otra de las subsecciones me carga desde "C:", en lugar de hacerlo desde "localhost". Por tanto, al ser un archivo .php corriendo desde FUERA de un servidor, me sale página de error de que Firefox no puede abrir el protocolo c o algo así... La dirección a la que me manda los enlaces es del tipo:
c:\wamp\www\proyecto1/seccion-seleccionada/

Por eso tendría que cargar desde localhost, o sea, desde el propio servidor local. A eso me refiero... Por cierto, tiene barras invertitas y barras normales en la misma dirección... ¿no será eso también un fallo?

¿O es que no tenía que copiarlo literalmente?

Espero puedas ayudarme nuevamente... ¡Y gracias por tu pronta respuesta!
  #4 (permalink)  
Antiguo 20/08/2014, 12:55
 
Fecha de Ingreso: agosto-2014
Mensajes: 10
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: ¿Cómo puedo almacenar el directorio raíz de mi sitio en localhost con Wamp

Prueba entonces con la carpeta raíz de tu servidor y no la ruta entera del sistema.
Código PHP:
Ver original
  1. echo $_SERVER['DOCUMENT_ROOT'];
De esa forma sabrás cual es la carpeta raíz de tu servidor, a partir de ahí sólo tendrías que concatenar las barras y carpetas. Define rutas con constantes para que te sea más cómodo.
Código PHP:
Ver original
  1. define ('RAIZ', $_SERVER['DOCUMENT_ROOT']);
  2. define ('CORE', RAIZ . 'core/');
Lo de arriba un ejemplo, ya eso lo defines a tu gusto.
  #5 (permalink)  
Antiguo 21/08/2014, 04:02
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 24
Antigüedad: 10 años, 4 meses
Puntos: 1
Pregunta Respuesta: ¿Cómo puedo almacenar el directorio raíz de mi sitio en localhost con Wamp

No parece servirme. Al escribir:
Código PHP:
echo $_SERVER['DOCUMENT_ROOT']; 
... me devuelve esto:
Cita:
C:/wamp/www/
Sigue siendo desde "C:"...

Me pone la misma dirección lo ponga donde lo ponga. Voy a probar, aunque sea desde C, a modificarlo como decías y añadirle, con esa otra llamada "CORE" lo de "proyecto1/". Si funciona, aviso. Si no, también.

¡Muchas gracias nuevamente!
  #6 (permalink)  
Antiguo 21/08/2014, 04:20
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 24
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo puedo almacenar el directorio raíz de mi sitio en localhost con Wamp

Cita:
Iniciado por LordYo Ver Mensaje
Voy a probar, aunque sea desde C, a modificarlo como decías y añadirle, con esa otra llamada "CORE" lo de "proyecto1/". Si funciona, aviso. Si no, también.

¡Muchas gracias nuevamente!
Efectivamente, no funciona. Me coje la ruta de C:wamp correctamente. Pero no lo transforma a localhost. Sólo me funciona la sección de Inicio, que, no sé cómo fue, pero le puse como "href" la dirección: "/proyecto1/"

Es el único que me funciona y que no me "coje" la dirección de C: sino la de localhost/

Éste es el mensaje de Firefox, por si no se entendía claramente:

Cita:
La dirección no resulta comprensible

Firefox no sabe cómo abrir esta dirección, porque uno de los protocolos siguientes (c) no está asociado con ningún programa o no está permitido en este contexto.

Podría necesitar instalar otro software para abrir esta dirección.
Eso con cualquier dirección... como ésta...

Cita:
c:/wamp/www/proyecto1/subseccion/
  #7 (permalink)  
Antiguo 22/08/2014, 09:25
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 24
Antigüedad: 10 años, 4 meses
Puntos: 1
De acuerdo Respuesta: ¿Cómo puedo almacenar el directorio raíz de mi sitio en localhost con Wamp

Quisiera comunicar que, dando muchas vueltas por internet, POR FIN he logrado encontrar algo que me ha funcionado... Lo pongo aquí por si a alguien más le pasa lo que a mí.

FUENTE:
[URL="http://www.islavisual.com/articulos/desarrollo_web/solucion-al-problema-de-los-niveles-de-directorios-en-php.php"]http://www.islavisual.com/articulos/desarrollo_web/solucion-al-problema-de-los-niveles-de-directorios-en-php.php[/URL]

He usado la versión de varias líneas del código que viene en esa página.
Código PHP:
<?php
    $pagina 
$_SERVER['PHP_SELF'];
    
$contar_slashes substr_count($pagina'/')-1;
    for(
$i=1;$i<=$contar_slashes;$i++){
        
$nivel .= "../";
    }
    
    
// Luego utilizamos la variable $nivel antepuesta a todas las funciones que requieran especificar un nivel de 
    // directorio, y que sea absoluto.
?>
La de una sóla línea, no la he usado.

Código PHP:
<?php for($i=1;$i <= substr_count($_SERVER['PHP_SELF'],'/')-1;$i++){$nivel .= "../";} ?>
SUPONGO que funcionaría igual. Pero yo lo veo más claro de la primera manera.

En mi caso particular, he puesto la función en la página de funciones.php y la he incluido llamando y llamado llamado a dicha funció en cada archivo ANTES de llamar a configuracion.php

Para ser más exactos, lo he hecho de la siguiente manera.
En funciones.php:
Código PHP:
function niveles($pagina_actual) { // Lo he modificado para no tener que repetirlo en cada página...
// Así, sabemos el valor obtenido corresponderá a esta página...
    
$nivel =""// La he añadido manualmente, porque no le he visto declarada... ¿habrá sido un fallo?
    
$pagina $pagina_actual// Esto es evidente...
    
$contar_slashes substr_count($pagina'/')-2// El original resta 1. Yo le resto 2 porque no lo tengo en el localhost directamente,
// sino en una carpeta con el nombre del proyecto... Aunque no estoy seguro de si realmente ése es el motivo... Si alguien puede confirmármelo por privado....
// El caso es que me daba error incluso en el propio index principal del proyecto... Y restántode 2, sí me funciona. Deduzco que es por eso.
    
for($i=1;$i<=$contar_slashes;$i++){
        
$nivel .= "../";
    }
    
// Luego utilizamos la variable $nivel antepuesta a todas las funciones que requieran especificar un nivel de 
    // directorio, y que sea absoluto.
    
return $nivel// Devolvemos el valor calculado... esto es añadido por mí también.

Y en el archivo index.php y en cualquier otro que NO esté en la carpeta REQUIRES:
Código PHP:
include("requires/funciones.php"); // O "../", o "../../", etc... Porque TODAVÍA no está creada
// la variable con la ruta... luego ya se usa dicha variable directamente
$nivel niveles($_SERVER['PHP_SELF']); // Almacenamos el valor de la ruta de la página actual.
// Le pasamos como parámetro dicha página actual a la función, para que haga el cálculo correcto.
include($nivel."requires.configuracion.php"); 
Y eso es todo. Me funciona en cualquier sección, subsección y lo que sea. Siempre que lo añada, claro. :D

¡SOLUCIONADO!


PD: ¡Muchísimas gracias a Per0na por su gran paciencia.

Última edición por LordYo; 22/08/2014 a las 09:35

Etiquetas: localhost, raiz
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 09:01.