微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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”的方式告诉您的.我不确定身份验证是否可以跨同一主机上的多个领域进行,但是无论如何,这解决了问题.

原文地址:https://codeday.me/bug/20191107/2002363.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐