Ver Mensaje Individual
  #7 (permalink)  
Antiguo 22/08/2014, 09:25
LordYo
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 24
Antigüedad: 9 años, 10 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