代码之家  ›  专栏  ›  技术社区  ›  Ian McIntyre Silber

drupal-使用boostrap检查drupal之外的登录用户是否不工作

  •  5
  • Ian McIntyre Silber  · 技术社区  · 15 年前

    我把头发拔出来想弄清楚这个。我不能让引导程序在Drupal目录之外正常工作。如果我在drupal目录中运行这段代码,它会很好地工作,但是在一个级别上不工作。

    我的drupal路径是/public_html/drupal/。我运行的脚本是/public_html。

    $user没有返回登录用户。我已经确认这不是跨域问题(即www.domain.com与domain.com)。

    chdir('/path/to/drupal');
    
    include_once('./includes/bootstrap.inc');
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    global $user;
    
    if ($user->uid) {
        print "Logged in";
    } else {
       print "Logged out";
    }
    
    2 回复  |  直到 12 年前
        1
  •  6
  •   Henrik Opel    15 年前

    如果在单独的脚本中Drupal无法识别该用户,则很可能该用户没有收到正确的会话cookie。您应该检查由您的常规Drupal安装设置的cookie,看看它们是否也被发送到您的脚本。如果没有,请检查 $cookie_domain 变量在drupals settings.php中-通常是注释掉的,但是您可能需要在您的案例中显式地设置它。

        2
  •  2
  •   user113292    15 年前

    Drupal使用了很多强大的向导来确定要使用的环境:部分原因是在同一个Drupal安装中可能有多个站点。

    你错过的一件事是 $base_url . 这需要设置为要提升的Drupal站点的URL(例如 $base_url = "http://example.com" )

    另一件事你会遇到,但看起来你已经处理好了,你的脚本和Drupal需要有相同的fqdn。打开脚本 http://foo.example.com 让Drupal活下去 http://example.com 不会起作用。所以,除非Drupal还活着 http://example.com/drupal 你的剧本还在继续 http://example.com网站 ,脚本将始终返回匿名用户对象。


    编辑

    能够 将脚本保存在与Drupal不同的fqdn中(例如,在 http://drupal.example.com 哪些指向 /var/www/drupal 你的剧本在 http://external.example.com/test.php 哪些指向 /var/www/test.php 但是,在这种情况下,您需要登录 http://external.example.com/drupal 而不是 http://drupal.example.com .