升级到 Ubuntu 14.04(和 Apache2 2.4)服务器我无法将 MySQL 用作 htaccess;
升级之前,我在虚拟主机中使用 MySQL 作为 htaccess - 运行良好:
<Directory /var/www/html/tilmelding/login>
AuthBasicAuthoritative Off
AuthUserFile /dev/null
# begin auth_mysql configuration
AuthMySQL On
AuthMySQL_Host localhost
AuthMySQL_User **********
AuthMySQL_Password *********
AuthMySQL_DB **********
AuthMySQL_Password_Table user_info
AuthMySQL_Username_Field user_name
AuthMySQL_Password_Field user_passwd
AuthMySQL_Empty_Passwords Off
AuthMySQL_Encryption_Types PHP_MD5
AuthMySQL_Authoritative
AuthType Basic
AuthName "auth_mysql test"
Require valid-user
升级后它不起作用。
在日志文件中我得到:
[:debug] [pid 31333] mod_auth_mysql.c(1578): Constructing password collection query with passfield=[user_passwd], table=[user_info], userfield=[helgoland], where_clause=[]
[:debug] [pid 31333] mod_auth_mysql.c(1410): sec->dbh in /var/www/html/tilmelding/login/ is
[:debug] [pid 31333] mod_auth_mysql.c(1417): Ordinary query
[:debug] [pid 31333] mod_auth_mysql.c(1434): Running query: [SELECT user_passwd FROM user_info WHERE user_name='helgoland']
[:debug] [pid 31333] mod_auth_mysql.c(1522): Checking with PHP_MD5
[:debug] [pid 31333] mod_auth_mysql.c(1524): Auth succeeded
[:error] [pid 31333] No requires line available
我能够从 CLI 执行查询并获取 MD5。
我错过了什么?
答案1
只需添加AuthMySQL_Authoritative Off
到 .htaccess
答案2
我偶然发现了完全相同的问题,所以我看到了这篇文章。
对于任何到达这里的人来说,这是我的结论。
经过进一步搜索网络后,大多数人似乎得出结论,lib-apache2-mod-auth-mysql 与 Apache 2.4(Ubuntu 14.04 中的标准)不兼容,而且对该模块的支持已经停止。
有人建议重新编译(版本 3.0.0)并打上一些补丁即可修复该问题。但这似乎有点“黑客”的意味。
使用 MySQL 进行基本身份验证/授权的官方“Apache”方法是使用 dbd 模块 (mod_authn_dbd)。如何做到这一点在官方 Apache 文档中有非常清晰的解释。http://httpd.apache.org/docs/current/mod/mod_authn_dbd.html.
本文档根据 Apache 许可证授权。 http://www.apache.org/licenses/LICENSE-2.0
因此请注意,虽然您可以在 Ubuntu 14.04 LTS 中使用 apt-get 安装 lib-apache2-mod-auth-mysql,但最好避免这样做,因为它对于此版本而言本质上是有缺陷的。
答案3
AuthMySQL_Authoritative 关闭对我来说也有效(作为 Virtualhost 配置中的一行)。我相信它允许 mod_auth_mysql 将凭据传递给 mod_auth 进行身份验证。