Foros del Web » Programando para Internet » PHP »

¿que hacer si no se puede usar $_SERVER['DOCUMENT_ROOT'] ?

Estas en el tema de ¿que hacer si no se puede usar $_SERVER['DOCUMENT_ROOT'] ? en el foro de PHP en Foros del Web. hola, recientemente he abierto una cuenta en un hosting gratuito para hacer pruebas y me he encontrado con este problema. todas las rutas de mi ...
  #1 (permalink)  
Antiguo 14/09/2011, 03:36
 
Fecha de Ingreso: agosto-2011
Mensajes: 110
Antigüedad: 12 años, 8 meses
Puntos: 13
¿que hacer si no se puede usar $_SERVER['DOCUMENT_ROOT'] ?

hola, recientemente he abierto una cuenta en un hosting gratuito para hacer pruebas y me he encontrado con este problema.

todas las rutas de mi proyecto son absolutas empezando con $_SERVER['DOCUMENT_ROOT'], pero en este servidor(000webhost.com), al utilizar la variable me lleva a un directorio que no es el directorio raiz de mi web (me lleva a un directorio /htdocs cuando la raíz es /public_html) por lo que me lanza un error de acceso denegado. La cuestión es que ahora tengo que poner manualmente todas las rutas raíz ya que tampoco me funciona con rutas relativas

La única solución que se me ha ocurrido es crear un archivo en la raíz donde defina una constante _DOCUMENT_ROOT, con la ruta raíz puesta a mano, y posteriormente mediante htaccess incluirla al principio de todos los archivos.
(ya habia definido una cosntante similar para hacer mas amigable la variable $_SERVER*** )

mi pregunta es, ¿alguien tiene una idea mejor que esta y mas elegante?

pondré por aquí también ejemplos de rutas relativas que he probado y que me dan error para ver si el fallo es mio

Código:
require_once('../../private/config/config.php');
estando config.php en :  /miweb/private/config/
y el archivo del require en:  /miweb/es/includes/includes.php

Última edición por bray; 14/09/2011 a las 04:00
  #2 (permalink)  
Antiguo 14/09/2011, 07:20
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: ¿que hacer si no se puede usar $_SERVER['DOCUMENT_ROOT'] ?

para rutas relativas tenes que configurar mod_rewrite, no se si te lo permite 000webhot (yo lo uso). luego por que no haces un archivo config.php donde tenga esto:

por ejemplo mi document root es este: /var/www el convensional de linux.
yo puedo hacer esto
Código PHP:
Ver original
  1. <?php
  2. if($_SERVER['DOCUMENT_ROOT']=='/var/www')
  3.         $_SERVER['DOCUMENT_ROOT']='/var/www'; // este es el que yo quiero
  4.     else
  5.         $_SERVER['DOCUMENT_ROOT']=_DOCUMENT_ROOT; //lo cambio por el que defini en la constante
  6. ?>

te dejo este post http://www.forosdelweb.com/f58/document_root-594805/
pero te va a ser dificil configurarlo desde un hosting que no es tuyo.......
  #3 (permalink)  
Antiguo 14/09/2011, 07:39
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: ¿que hacer si no se puede usar $_SERVER['DOCUMENT_ROOT'] ?

y porque no te creas una constante donde definas la ruta?
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #4 (permalink)  
Antiguo 14/09/2011, 07:45
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: ¿que hacer si no se puede usar $_SERVER['DOCUMENT_ROOT'] ?

Cita:
Iniciado por bray Ver Mensaje

todas las rutas de mi proyecto son absolutas empezando con $_SERVER['DOCUMENT_ROOT'], pero en este servidor(000webhost.com), al utilizar la variable me lleva a un directorio que no es el directorio raiz de mi web (me lleva a un directorio /htdocs cuando la raíz es /public_html) por lo que me lanza un error de acceso denegado.
000Webhost usa VirtualDocumentRoot en su configuración de VirtualHosts.
Pero tiene Instalado PHP como módulo de Apache, asi que podrias probar (y digo probar porque no sé si tienen alguna restricción puesta al respecto, si no vas a tener que usar ini_set() en cada una de las scripts) de poner en tu .htaccess
Código Apache:
Ver original
  1. php_value auto_prepend_file "/ruta/config.php"
y en config.php definir las variables que necesites

además, hasta donde recuerdo la ruta en tu sistema de archivos de 000webhost es
/home/a807s45t
Es decir /home + tu numero de usuario, ese valor lo podes obtener en tu Panel de Control.
y tu web de inicia en
/home/a807s45t/public_html

en cuanto a require() e include() para evitarte problemas usa

require('ruta completa en el sistema de archivos')

include('ruta completa desde tu directorio raiz')


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 14/09/2011 a las 07:58
  #5 (permalink)  
Antiguo 14/09/2011, 08:03
 
Fecha de Ingreso: agosto-2011
Mensajes: 110
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: ¿que hacer si no se puede usar $_SERVER['DOCUMENT_ROOT'] ?

gracias a todos por responder,

a patriarka : Gracias por la respuesta, estuve pensando hacer eso , pero no sabia hasta que punto funcionaria bien o no, por lo que me decidí por definir mi propia constante _DOCUMENT_ROOT, pero para la próxima vez lo haré a tu modo, que , evita estar obligado a usar el htaccess .

a miktrv: Tengo creadas todas las constantes de rutas en el config.php al que intento acceder y al que todos los archivos llaman, de ahi el problema ejjeejej

a emprear: Eso precisamente es lo que hice, tome la ruta home/nombreusuario/public_html y defini una constante _DOCUMENT_ROOT con ella, y la agrege como has dicho, pero el usar el htacess para eso ... no se, me pareció algo bestia (posiblemente mi percepción) aunque aproveche el de las configuraciones básicas que tenia para ello

de nuevo gracias a todos por responder

Última edición por bray; 14/09/2011 a las 08:10
  #6 (permalink)  
Antiguo 14/09/2011, 11:52
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: ¿que hacer si no se puede usar $_SERVER['DOCUMENT_ROOT'] ?

Cita:
Iniciado por bray Ver Mensaje
gracias a todos por responder,

a patriarka : Gracias por la respuesta, estuve pensando hacer eso , pero no sabia hasta que punto funcionaria bien o no, por lo que me decidí por definir mi propia constante _DOCUMENT_ROOT, pero para la próxima vez lo haré a tu modo, que , evita estar obligado a usar el htaccess .

a miktrv: Tengo creadas todas las constantes de rutas en el config.php al que intento acceder y al que todos los archivos llaman, de ahi el problema ejjeejej

a emprear: Eso precisamente es lo que hice, tome la ruta home/nombreusuario/public_html y defini una constante _DOCUMENT_ROOT con ella, y la agrege como has dicho, pero el usar el htacess para eso ... no se, me pareció algo bestia (posiblemente mi percepción) aunque aproveche el de las configuraciones básicas que tenia para ello

de nuevo gracias a todos por responder
contanos, si lo solucionste (a mi modo por supuesto)
  #7 (permalink)  
Antiguo 17/09/2011, 03:42
 
Fecha de Ingreso: agosto-2011
Mensajes: 110
Antigüedad: 12 años, 8 meses
Puntos: 13
Respuesta: ¿que hacer si no se puede usar $_SERVER['DOCUMENT_ROOT'] ?

Hola patriarka, para evitar estar utilzando htacces en este tema he utilizado tu solucion, pero sin ningun tipo de condicional. es decir, como ya se que la direccion que almacena $_SERVER['DOCUMENT_ROOT'] no es valida, directamente en todos los archivos config he hecho el cambio de valor

Código:
  $_SERVER['DOCUMENT_ROOT'] = 'home/usuario/public_html'
he tenido que cambiar las rutas de alguno de los config (tiene 3 el proyecto, segun los permisos de cada zona) para no tener que volver atras. Admito que la solucion no es demasiado elegante, pero por lo menos evito estar sobrecargando el htaccess y asi evito ralentizar la pagina (aunque sea poco)

gracias a todos por sus respuestas

un saludo

Etiquetas: html, usar, variables
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 12:50.