使用PHP设置Apache日志的REMOTE_USER

4
在 mod_perl 中,我可以执行以下操作:
$r->user("username");

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

有没有办法在php中实现这一点?而不必修改apache?

编辑:到目前为止,我已经尝试了以下两种方法:

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

没有运气

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

ip地址 REMOTE_USER IDENT日期时间...等等

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


你作为已认证的用户执行过 phpinfo() 吗?在结果数据中,你应该能找到你的用户名... - Charles
我的已认证用户是通过编程方式进入的,而不是通过Apache。我知道如何从Apache获取用户,但我不知道如何告诉Apache这个用户是谁。 - Gavin Mogan
我有点困惑。你是在尝试确定HTTP认证用户的用户名吗?如果用户没有进行HTTP认证,那么你所尝试的事情将不起作用。你能否编辑你的问题,更详细地解释认证的性质? - Charles
我正在尝试将其设置为保存到Apache日志中。迄今为止,我列出的所有内容都是设置,而不是获取。 更新的问题。 - Gavin Mogan
3个回答

2

非常酷,我不知道那个,但不幸的是它没有起作用。 - Gavin Mogan

2

诀窍是使用apache_setenv()函数,同时更改日志格式以包含%{REMOTE_USER}e

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


0
我想你可以通过设置所需的超级全局变量来简单地重写/提供变量,就像你处理其他任何变量一样。然而,话虽如此,快速查看PHP文档,你所说的那个变量没有列出:

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

祝好, Alex


抱歉,看到我的更新了吗。我已经尝试了我认为最明显的两个 $_SERVER 项目。 - Gavin Mogan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接