1、错误内容
在宝塔的7.9版本中,提供了phpMyAdmin的面板访问功能,也就是如果面板是http://1.1.1.1:8888
,那么可以通过http://1.1.1.1:8888/phpmydmin
访问,并且需要提前登录面板。
这个功能增加了安全性,这样就不需要单独开一个端口用于phpMyAdmin,然而我开启了面板SSL,在登录时成功遇到错误:
phpMyAdmin failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.
这就是说,需要HTTP/HTTPS前后匹配,才可以成功登录。
2、解决方案
下列四种方案,只需要选择一种即可。
2.1、关闭面板SSL
如果不愿意折腾的话,直接关闭面板SSL即可,但是会导致安全性下降,不建议采用。
2.2、更改phpMyAdmin端口
宝塔似乎直接反向代理888
端口,因此可以:
- 先把HTTP端口改为非888
- 开启HTTPS端口并改为888
- 关闭HTTP端口
经实测,该方案在大多数时候可以完美解决。
2.3、设置绝对路径
修改phpMyAdmin路径下的
config.inc.php
找到:
1 | $cfg['PmaAbsoluteUri'] = 'https://.../...'; |
如果没有的话手动添加。
假如你的phpMyAdmin现在要通过https://pma.com/my_pma_login/
访问,就设置为:
1 | $cfg['PmaAbsoluteUri'] = 'https://pma.com/my_pma_login/'; |
即可完美解决问题。
2.4、设置Cookie登录
修改phpMyAdmin路径下的
config.inc.php
找到
1 | $cfg['Servers'][$i]['auth_type'] = '...'; |
改为
1 | $cfg['Servers'][$i]['auth_type'] = 'cookie'; |
但是似乎默认就是Cookie,也许有人乱动这个也会导致错误
2.5、设置反向代理头部
如果为自己设置的反向代理,可以尝试添加:
1 | proxy_set_header Cookie $http_cookie; proxy_cookie_domain a.com b.com; |
a.com
是反向代理之后的域名,b.com
是原来的域名。
解决phpMyAdmin无法设置Cookie
评论