2010-10-18 18 views
6

Dentro de un módulo Drupal, necesito obtener la ruta base donde está instalado el sitio Drupal.¿Cuál es la forma correcta de obtener la raíz del documento Drupal instalado?

Por ejemplo, si el sitio de Drupal está instalado en: www.example.com/mysite/ entonces quiero conseguir '/ var/www/myseite'

si se instala en: www.example.com/ luego quiero '/ var/www'

¿Cuál es la forma correcta de Drupal de obtener esto? Quiero evitar las variables de servidor de PHP, ya que he leído que no son confiables.

(Drupal 6 y Drupal 7)

+0

No estaba claro en esta pregunta en absoluto. Yo quería la raíz del documento. – Justin

Respuesta

10

En Drupal 7, hay una nueva constante llamada DRUPAL_ROOT que puede usar para esto.

1

base_path() hace esto en tanto D6 y D7.

+0

base_path() no devuelve la ruta de docroot como '/ var/www/mysite'. – zsd

2

adición a la respuesta de Scott Reynen:

En la plantilla page.tpl.php, también está disponible en la variable $base_path.

En muchos casos, ni siquiera necesita saber la ruta base, porque las funciones de la API Drupal lo añaden. Por ejemplo, para imprimir un enlace, usted puede hacer esto:

<?php print '<a href="' . base_path() . 'foo/bar">Foo Bar</a>'; ?> 

Pero el "camino de Drupal" de hacerlo es utilizar el l) función (:

<?php print l('Foo Bar', 'foo/bar'); ?> 

El l() Función agregará automáticamente la ruta base al href.

+0

Gracias, esto es correcto, pero no estaba claro en mi pregunta. Quiero la raíz del documento. Las ediciones anteriores deberían ayudar a aclarar. – Justin

+0

No creo que Drupal tenga una función específica para eso. Drupal siempre intenta ser agnóstico para el entorno del servidor. La idea es que si usa las funciones de API, no debería necesitar conocer la ruta del servidor. – marcvangend

5

Para obtener la raíz del documento completo del sistema de archivos que utilizo:

$_SERVER['DOCUMENT_ROOT'] . base_path() 

En un servidor Linux obtendrá algo como:

/var/www/html/www.example.com/mysite/ 

Si sólo utiliza "base_path()" , obtendrá solamente:

/mysite/ 

mismo en Drupal 6 y 7.

0

Puede usar la constante DRUPAL_ROOT para eso.

+0

Lee las otras respuestas antes de agregar las tuyas. – manuell

Cuestiones relacionadas