php-如何使当前用户登录到Apache领域?

我正在为Subversion写一个简单的内部前端.感谢WebDAV,我们有一个Apache设置来服务SVN存储库.另外,身份验证是通过Apache领域和Open Directory完成的.对于它的价值,这基本上是一个漂亮的原始Mac OS X Server 10.6设置.

现在,我们前端负责启动的一些任务需要知道调用该操作的用户用户名.例如,创建存储库需要它,以便我们获得真正创建者的正确日志.如果我不提供此信息,则SVN只会使用创建它的过程,在本例中为运行httpd的用户.

我在PHP中进行此操作,但不一定必须使用PHP来实现.如果我可以在shell脚本中获取信息,也可以.重要的是我以某种方式获得了信息.我最初开发的解决方案只是调用

get_current_user();

但是,这似乎总是返回我的用户名,即使其他一些用户登录到域时正在启动该操作.有没有办法获得正确的用户

编辑:我可能有点太快了,无法在这里跳枪.似乎在一定时间后未设置前一个变量.但是,由于没有登录请求,因此用户仍处于登录状态.因此,以下建议的解决方案实际上并不适用.

现在我觉得自己像个偶像.这个简单的代码片段有效(尽管很难找到):

$username = $_SERVER["PHP_AUTH_USER"];

但是,这没有:

$username = apache_getenv("REMOTE_USER");

任何人都知道为什么后者不起作用?我能找到的唯一文档表明它只能在Apache 2上运行.但是,实际上我在运行Apache 2,因此并非如此.

解决方法:

因此,在搜索了很长一段时间后,我意识到获取用户名方法几乎在每个传递的PHP版本中都发生了变化.当前的解决方案似乎是从以下变量获取数据:

$_SERVER['REMOTE_USER'];

但是,可以或可以不设置此变量.我可能确实正确地看到了该信息的原因是,当我登录到领域然后访问了该领域之外的PHP脚本时,该信息已在标头中发送.信息确实到达了,但并不可靠.

Apache docs实际上是以“哦BTW”的方式告诉您的.我不确定身份验证是否可以跨同一主机上的多个领域进行,但是无论如何,这解决了问题.

相关文章

首先介绍下什么是git和svnGIT(分布式版本控制系统)Git(读音...
注意点:系统环境:centos7,python,django,svn,jenkins首先安装...
  我使用过的版本控制工具有两种:早期的时候使用的是SVN,...
用好Git和SVN,轻松驾驭版本管理本文从Git与SVN的对比入手,...
01.jenkins安装jenkins网站:https://jenkins.io/安装:资料...
软件环境:centos7jdk1.8svn1.9maven3.5tomcat8jenkins2.80 ...