Foros del Web » Programando para Internet » PHP »

constantes ruta absoluta e includes

Estas en el tema de constantes ruta absoluta e includes en el foro de PHP en Foros del Web. Estoy incursionando en esto de definir constantes para cargar todo lo que una pagina necesite en base a las rutas absolutas: Cita: define('DOMINIO', 'http://localhost/manual26/AoITutorials/'); define('LIBRARY', ...
  #1 (permalink)  
Antiguo 15/05/2010, 09:47
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 9 meses
Puntos: 101
constantes ruta absoluta e includes

Estoy incursionando en esto de definir constantes para cargar todo lo que una pagina necesite en base a las rutas absolutas:

Cita:
define('DOMINIO', 'http://localhost/manual26/AoITutorials/');
define('LIBRARY', DOMINIO.'Library/');
define('CSS_DIR', LIBRARY.'styles/');
define('IMG_DIR', LIBRARY.'images/');
define('LOGIN_DIR', LIBRARY.'login/');
Para algunas cosas esto va bien. Pero lara include y scandir el servidor (local) me da error:
Cita:
Warning: include() [function.include]: URL file-access is disabled in the server configuration
Leyendo algo en este foro vi propuestas como esta, que es un tanto incomoda:
define('ROOT',$_SERVER['DOCUMENT_ROOT']);

A DOCUMENT_ROOT habría que comprobarle que el ultimo caracter sea /. Y ademas habría que tenerlo definido en un archivo aparte, cosa molesta porque estamos en la misma situación: tengo que usar una ruta relativa para incluir las constantes!

Hay alguna manera confiable para usar una ruta basica en cualquier servidor remoto? Aún no se a donde voy a subir mi proyecto.
  #2 (permalink)  
Antiguo 15/05/2010, 10:14
 
Fecha de Ingreso: mayo-2010
Mensajes: 51
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: constantes ruta absoluta e includes

Según sé amigo mio, en la mayoría de los servidores (si no es que en todos) para los require e include están deshabilitadas las rutas absolutas. Es por cuestiones de seguridad.

Si deseas hacer un include o require deben de ser con direcciones relativas.

Espero haber resuelto tu duda.
  #3 (permalink)  
Antiguo 15/05/2010, 10:14
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: constantes ruta absoluta e includes

DOCUMENT_ROOT el último caracter va a ser siempre /. No hay necesidad de comprobar ese caracter. Y esa forma es la que te debe funcionar en todos los sistemas ya que declaras siempre el directorio principal y de ahí partes a indicar la ruta de donde está el archivo.

@Luisus, de donde tomaste esa información de las rutas absolutas. Hasta ahora donde yo sé los includes no tienen problemas con rutas absolutas en el mismo servidor. Sí tiene problemas con rutas a otros servidores ya que necesita habilitar allow_url_fopen. Pero no había leído de problemas con rutas absolutas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 15/05/2010 a las 10:27
  #4 (permalink)  
Antiguo 15/05/2010, 10:15
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 9 meses
Puntos: 101
Respuesta: constantes ruta absoluta e includes

Ok. Gracias!

Tengo otra duda dentro de lo mismo.

Basicamente tengo muuuchos archivos en carpetas y subcarpetas que hacen un include index.php. Por ejemplo:

http://localhost/manual26/AoITutoria...rial/index.php para funcionar)

En este ejemplo, si yo imprimo PHP_SELF, obtengo:

Cita:
echo dirname($_SERVER['PHP_SELF']);

/manual26/AoITutorials/HandTutorial/HandTutorial
Es decir, estoy dentro de /HandTutorial/HandTutorial

Esta es mi estructura de directorios:

Cita:
HandTutorial/HandTutorial
Library/
Library/styles
La cuestion es que el archivo que tengo ahí hace un include "../../index.php"

Ese include esta en el directorio /manual26/AoITutorials/

Pero dentro de index, las rutas absolutas son muy extrañas!!!

include ("Library/indexHeaderwithVars.php"); FUNCIONA

pero scandir("../../Library/styles") FUNCIONA TAMBIEN (solo con ../../)

Por que a include no tengo que ponerle ../../ y a scandir si? Las dos funciones estan en index.php

Última edición por mayid; 15/05/2010 a las 10:23
  #5 (permalink)  
Antiguo 15/05/2010, 10:31
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: constantes ruta absoluta e includes

Pero usando DOCUMENT_ROOT te evitas este tipo de complicaciones de rutas.
Código PHP:
Ver original
  1. <?php
  2. include($_SERVER['DOCUMENT_ROOT'] . 'otroDirectorio/archivo.php');
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 15/05/2010, 10:36
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 9 meses
Puntos: 101
Respuesta: constantes ruta absoluta e includes

Muy cierto. ADemas caí en la cuenta que los includes son relativos al archivo que los llama. Mientras que funciones como scandir son relativas al archivos madre.

En fin, parece que todo va bien, salvo por la hoja de estilo. Funcionaba la ruta absoluta. Pero con ROOT no:

define('DOMINIO', 'http://localhost/AoITutorials/'); // FUNCIONABA

define('ROOT',$_SERVER['DOCUMENT_ROOT']."AoITutorials/"); // NO FUNCIONA

Imprime:

<link href="C:/wamp/www/AoITutorials/Library/styles/mainStyle.css" type="text/css" rel="stylesheet" />

Última edición por mayid; 15/05/2010 a las 10:44
  #7 (permalink)  
Antiguo 15/05/2010, 11:29
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 9 meses
Puntos: 101
Respuesta: constantes ruta absoluta e includes

DOCUMENT_ROOT me imprime: C:/wamp/www/

Estoy teniendo una serie de inconvenientes con esa ruta. Las hojas de estilo y las imagenes no se cargan!. En cambio, funcionaba usando:

define('DOMINIO', 'http://localhost/AoITutorials/');

Pero así, cosas como los includes no funcionan. Definiedo un ROOT para algunas cosas y otro para otras funciona pero es complejo :(

Última edición por mayid; 15/05/2010 a las 11:47
  #8 (permalink)  
Antiguo 15/05/2010, 11:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: constantes ruta absoluta e includes

El document root lo debes hacer solo a las funciones que requieran ruta de PHP. Las etiquetas de HTML requieren rutas absolutas pero indicando el nombre del dominio. Vas a tener que crear dos constantes, una para las funciones de PHP y otra para las etiquetas de HTML.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: includes, ruta
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 13:56.