Nginx部署phpMyAdmin 4.9.5登录失败:无法设置Session Cookie
针对你遇到的Failed to set session cookie. Maybe you are using HTTP instead of HTTPS错误,以下是具体的排查和修复步骤:
1. 调整phpMyAdmin配置文件
编辑/etc/phpmyadmin/config.inc.php,添加或修改以下配置项:
- 确保session存储路径存在且PHP有读写权限:
$cfg['SessionSavePath'] = '/var/lib/php/sessions'; - 如果你用HTTP访问(非HTTPS),强制关闭Cookie的Secure属性:
$cfg['CookieSecure'] = false; - 调整Cookie的SameSite属性,避免浏览器拦截:
$cfg['CookieSameSite'] = 'Lax';
2. 检查PHP的Session配置
找到PHP 7.4的配置文件(通常是/etc/php/7.4/fpm/php.ini,如果用PHP-FPM),确认以下参数:
- Session存储路径和phpMyAdmin配置一致:
session.save_path = "/var/lib/php/sessions" - 关闭Cookie的Secure属性(HTTP环境下):
session.cookie_secure = Off - 开启Cookie支持:
session.use_cookies = On - 设置合理的SameSite属性:
session.cookie_samesite = "Lax"
修改后重启PHP-FPM服务:
systemctl restart php7.4-fpm
3. 修正Nginx配置
确保phpMyAdmin的Nginx配置正确传递Cookie信息,编辑对应的配置文件(如/etc/nginx/sites-available/phpmyadmin.conf),在PHP处理的location块中添加fastcgi_param HTTP_COOKIE $http_cookie;,完整示例:
location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 或127.0.0.1:9000,根据你的环境调整 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTP_COOKIE $http_cookie; include fastcgi_params; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } }
修改后重启Nginx:
systemctl restart nginx
4. 验证Session目录权限
确保PHP的session存储目录权限正确,执行以下命令:
chown www-data:www-data /var/lib/php/sessions chmod 700 /var/lib/php/sessions
完成以上步骤后,重新尝试用cookie认证方式登录phpMyAdmin即可。
内容的提问来源于stack exchange,提问作者HINF
相关产品推荐
相关产品推荐

