【问题标题】:How to set an HTTP environment variable from PHP for Bugzilla?如何从 PHP 为 Bugzilla 设置 HTTP 环境变量?
【发布时间】:2010-09-25 07:29:50
【问题描述】:

bugzilla(基于 perl)系统具有使用 http 服务器环境变量自动登录的功能。如果您填写正确的 ID 或用户名,您将自动登录。

我的服务器运行 Joomla(基于 PHP)并且拥有所有关于谁登录的信息。它在一个子框架内运行 bugzilla。

那么,如何从 PHP 脚本设置这个环境值?

换句话说,以下脚本如何在 PHP 会话的其他地方返回我自己设置的变量:

#!/usr/bin/perl -wT
print "Content-type: text/html\n\n";
while (($key, $val) = each %ENV) {
        print "$key = $val<BR>\n";
}

【问题讨论】:

    标签: php perl apache joomla bugzilla


    【解决方案1】:

    这只是一个猜测,但是(假设您使用的是 Apache2)您可以使用 apache_setenv() 设置环境变量。但是,这只会持续到当前 http 请求的整个生命周期,所以我不确定你是如何让它工作的——从你的浏览器框架中对 bugzilla 页面的请求将被 Apache 视为完全独立的。您或许可以使用virtual() 调用对Bugzilla 的子请求,然后Bugzilla 应该能够看到该环境变量。我不确定您是否需要为每个 Bugzilla 页面请求执行此操作,还是仅针对启动登录的请求执行此操作。

    对不起,如果我没有抓住重点或搞错了

    【讨论】:

    • 感谢您提供的信息。 HTTP 请求的生命周期确实是问题所在。我还没有看到 virtual() 函数,但这可能会奏效,因为它必须先进行登录注册(设置 cookie 或其他),然后才能执行其他操作。
    • 经过测试,这个方案确实有效!我确实必须使用 REQUEST_URI 环境。变量来重新转发发出的请求,因此对 POST 变量进行一些处理。在添加了一个 htaccess.txt 文件之后,每个 bugzilla 调用都通过这个 php 例程转移。效果很好!
    • 一段时间后,我们发现virtual()函数有很大的问题,上传文件等.这就像一个没有 virtual() 缺点的魅力。所以最终我们根本不需要设置环境变量。
    【解决方案2】:

    我不确定您需要做什么才能在 Bugzilla 中创建会话,但我知道在 Joomla! 结束时需要做什么:您需要创建一个响应 onLoginUser 事件的用户插件.有关此操作的示例,请查看 plugins/user/joomla.php 中的 onLoginUser 函数。

    (注意,这仅适用于 Joomla!1.5)

    【讨论】:

    • 是的,我熟悉登录过程。但是当然,当用户登录然后想去 bugzilla 时,我总是可以将用户重定向到特定的 PHP 页面,然后再进一步转发到 bugzilla 页面。
    猜你喜欢
    • 2011-02-13
    • 2015-02-06
    • 2013-11-10
    • 2020-02-14
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多