You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何开启外部认证时PHP_AUTH_USER、PHP_AUTH_PW变量仍被设置

PHP_AUTH变量设置规则说明

旧版常见解释

此前针对$_SERVER["PHP_AUTH_USER"]和$_SERVER["PHP_AUTH_PW"]未设置的问题,常见解释如下:

从PHP 4.3.0版本开始,为了防止有人编写脚本泄露通过传统外部机制认证的页面密码,若特定页面开启了外部认证且安全模式(safe mode)启用,则不会设置PHP_AUTH变量。你可以使用REMOTE_USER识别外部认证的用户,即调用$_SERVER['REMOTE_USER']。

PHP通过AuthType指令是否存在来判断外部认证是否生效。

但请注意,上述机制无法防止同一服务器下持有非认证URL控制权的人员窃取认证URL的密码。

实测与旧解释冲突的情况

在PHP 7.4.3版本下开启外部认证场景测试发现,PHP_AUTH变量实际是被设置的,由此推测原有旧解释已经失效,相关说明的第一部分已经从当前官方文档中移除,仅保留了后半部分:

Note: Configuration Note
PHP uses the presence of an AuthType directive to determine whether external authentication is in effect.

但请注意,上述机制无法防止同一服务器下持有非认证URL控制权的人员窃取认证URL的密码。

最终结论

经核实,只有开启安全模式时PHP_AUTH变量才不会被设置,而安全模式选项已经从PHP中移除,这也是相关内容从文档中删除的原因,最终结论为:
即使开启外部认证,PHP_AUTH变量也始终会被设置。


内容的提问来源于stack exchange,提问作者Pep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:06:04