2

この投稿を読みました。

Drupalは私のローカルマシンにインストールされており、正常に動作します。drupalインストールのディレクトリ内に静的ページを作成しました。好きhttp://localhost/usertest/userts.php

ページをrootディレクトリに移動した場合は機能しますが、ページをusertest他のディレクトリに移動した場合は機能しません。

ディレクトリ構造: -など
rootを含むすべてのdrupalファイルを含むdrupalインストールディレクトリ-rootのサブディレクトリ。 includes, modules, sites
usertest

コード:
私の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、現在のユーザーオブジェクトの出力が得られます。

私はここで何を見逃したのか理解できませんでした。誰かがこれを手伝うことができますか?

4

1 に答える 1

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'];
于 2012-07-04T12:03:31.117 に答える