在 Drupal 模块内部,我需要获取安装 Drupal 站点的基本路径。
例如,如果 drupal 站点安装在:www.example.com/mysite/ 那么我想获取 '/var/www/myseite'
如果它安装在:www.example.com/ 那么我想要 '/var/www'
什么是正确的 Drupal 方法来获得这个?我想避免 PHP 的服务器变量,因为我读到它们不可靠。
(Drupal 6 和 Drupal 7)
在 Drupal 7 中,有一个名为DRUPAL_ROOT的新常量,您可以使用它。
要获取我使用的文件系统的完整文档根目录:
$_SERVER['DOCUMENT_ROOT'] . base_path()
在 Linux 服务器上,你会得到类似的东西:
/var/www/html/www.example.com/mysite/
如果你只使用“base_path()”,你只会得到:
/mysite/
在 Drupal 6 和 7 上也是如此。
除了 Scott Reynen 的回答:
在 page.tpl.php 模板中,它也可以在$base_path
变量中使用。
在许多情况下,您甚至不需要知道基本路径,因为 Drupal API 函数会自己添加它。例如,要打印链接,您可以这样做:
<?php print '<a href="' . base_path() . 'foo/bar">Foo Bar</a>'; ?>
但是“Drupal 方式”是使用 l() 函数:
<?php print l('Foo Bar', 'foo/bar'); ?>
l() 函数会自动将基本路径添加到 href。
base_path()在 D6 和 D7 中都执行此操作。
您可以为此使用 DRUPAL_ROOT 常量。