【问题标题】:Setting REMOTE_USER for apache logs using php使用 php 为 apache 日志设置 REMOTE_USER
【发布时间】:2010-06-16 03:42:16
【问题描述】:

在 mod_perl 中,我可以执行以下操作:

$r->user("username");

然后用户名将显示在日志中的用户名部分。

有没有办法在 php 中做到这一点?不用修改apache?

编辑:到目前为止我都试过了:

$_SERVER['REMOTE_USER'] = "username";
$_SERVER['PHP_AUTH_USER'] = "username";
apache_setenv('REMOTE_USER', "username")

没有运气

编辑2: Apache 日志的格式为:

ipAddress REMOTE_USER IDENT datetime...等

我正在尝试设置 REMOTE_USER 而不使用 apache 的 mod_auth,而是使用 php 代码。

【问题讨论】:

  • 您是否以经过身份验证的用户身份完成了phpinfo()?在结果数据的某个地方,您应该找到您的用户名...
  • 我的认证用户是以编程方式进入的,而不是来自 apache。我知道如何从 apache 获取用户,我不知道如何告诉 apache 用户是什么。
  • 我很困惑。您是否尝试确定 HTTP 身份验证用户的用户名?如果用户未通过 HTTP 身份验证,那么您尝试执行的操作将不起作用。您能否编辑您的问题以更详细地解释身份验证的性质?
  • 我正在尝试将其设置为将其保存到 apache 日志中。到目前为止,我列出的所有内容都是设置,而不是获取。更新的问题。

标签: php apache


【解决方案1】:

这似乎是一个可能的选择:apache_setenv()

【讨论】:

  • 非常酷,我不知道那个,但不幸的是它不起作用。
【解决方案2】:

诀窍是使用 apache_setenv() 并更改 log_format 以包含 %{REMOTE_USER}e

因此,您基本上是将远程用户作为环境变量传递,并在 log_format 中获取该值。据我所知,没有办法覆盖“原始”变量。

【讨论】:

    【解决方案3】:

    我想您可以像设置任何其他变量一样通过设置所需的超全局变量来简单地覆盖/提供变量。不过话虽如此,PHP 文档的快速高峰和您所说的变量并未列出:

    http://www.php.net/manual/en/reserved.variables.server.php

    干杯, 亚历克斯

    【讨论】:

    • 抱歉,请参阅我的更新。我已经尝试了两个最明显的(对我而言)$_SERVER 项目。
    猜你喜欢
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 2018-02-22
    • 2013-04-10
    • 2011-09-30
    • 1970-01-01
    • 2015-06-05
    • 2017-11-17
    相关资源
    最近更新 更多