我已阅读this post.
Drupal已安装在我的本地计算机上并且运行正常。我在drupal安装中的目录中创建了一个静态页面。
与http://localhost/usertest/userts.php
如果页面移动到root
目录,它可以工作,但是当我将页面移动到usertest
或任何其他目录时,它无效。
目录结构:
root
- drupal安装目录,包含所有drupal文件,包括includes, modules, sites
等
usertest
- root的子目录。
代码:
我的userts.php
页面包含的内容是:
<?php
$currdir=getcwd();
chdir($_SERVER['DOCUMENT_ROOT']);
require_once("./includes/bootstrap.inc");
drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION);
global $user;
chdir($currdir);
?>
<p>USER VAR :</p>
<?php print_r( $user ); ?>
输出 虽然我已登录,但输出是以匿名用户身份提供的:
USER VAR :
stdClass Object ( [uid] => 0 [hostname] => 127.0.0.1 [roles] => Array ( [1] => anonymous user ) [session] => [cache] => 0 )
但是,如果我删除chdir
部分并将文件移动到root
目录并访问它
比如http://localhost/userts.php
,它会给我当前的用户对象输出。
我无法弄清楚我在这里错过了什么。任何人都可以帮忙吗?
答案 0 :(得分:2)
您需要定义DRUPAL_ROOT
define('DRUPAL_ROOT', $_SERVER['DOCUMENT_ROOT']);
require_once($_SERVER['DOCUMENT_ROOT'] . "/includes/bootstrap.inc");
drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION);
修改:// 强>
由于$base_url
您可以在初始化DRUPAL_BOOTSTRAP之前使用此代码解决此问题
global $base_url;
// Assuming your drupal installation lives in the DOCUMENT_ROOT
// -- Which yours does
$base_url = (array_key_exists('HTTPS', $_SERVER) ? 'https://' : http://') . $_SERVER['HTTP_HOST'];