phpMyAdmin错误:如果启用了httponly/secure cookie,则无法在没有错误的情况下启动会话


phpMyAdmin error: Cannot start session without errors if httponly/secure cookies are enabled

我刚刚在最新的Debian喘息上将LAMP服务器上的phpmyadmin更新到最新版本,现在当我尝试使用cookie身份验证方法登录时,我收到了以下错误:

phpMyAdmin - Error
Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.

使用身份验证方法http登录效果良好。目前,SSL在这两种情况下都被禁用。在谷歌上搜索这个问题两天也无济于事。最常提到的关于cookie保存路径访问权限缺失的问题不适用于此。Cookie被写入/var/lib/php5,所以所有权限似乎都在那里。手动将它们设置为chmod 777 www-data:www-data也不起作用。

当apache或php日志文件无法让我登录时,它不会将任何错误记录到日志文件中。其他错误正在记录中(我创建了一个语法不正确的test.php),因此日志记录本身就可以工作。

编辑2:我发现了一些东西:问题出在安全/可靠的cookie中。禁用

Header set Set-Cookie HttpOnly;Secure

解决了问题。但禁用此功能并不是一个好的解决方案。我的/etc/php5/apache2/php.ini/etc/php5/cli/php.ini文件都包含行

session.cookie_httponly = true
session.cookie_secure = true

并且CCD_ 6示出两个选项都被启用。

第三版:哦。问题是我启用了cookie标志secure(=cookie只能通过安全连接发送),但禁用了SSL。所以无法发送cookie。。。

这是因为phpmyadmin无法在php配置中定义为session.save_path的文件夹中进行写入。

要解决问题,请执行:

  • 执行php -i | grep session.save_path以查找用于会话的文件夹。在我的情况下,我有输出:session.save_path => /var/lib/php/session => /var/lib/php/session
  • 确保session.save_path中定义的文件夹存在。就我而言,我做了mkdir -p /var/lib/php/session

  • 确保该文件夹可由apache写入。就我而言,我做到了:

    • sudo setfacl-R-m u:www数据:rwX/var/lib/php/session
    • sudo setfacl-dR-m u:www数据:rwX/var/lib/php/session
    • 如果setfacl不可用,则执行sudo chown -R www-data /var/lib/php/session

经过一天的测试,我似乎找到了答案:

问题是我启用了cookie标志"安全"(=cookie只能通过安全连接发送),但禁用了SSL。因此,无法发送cookie,phpmyadmin(pma)有点崩溃。

禁用安全标志可以像启用ssl一样解决问题。

这也解决了另一个问题:pma的设置脚本(通常可以在yourdomain/phpmyadmin/setup/上访问)没有按预期工作:界面本身出现了,但无法添加服务器或保存手动更改的配置,也无法下载/上传任何文件。