PHP7会话警告-session_write_close

Cha*_*man 2 php php-7

从PHP5.6升级到PHP7后,我遇到了以下错误:

sapi_apache2.c(326): PHP Warning:  session_write_close(): Failed to write session data (user). Please verify that the current setting of session.save_path is correct (/var/lib/php/7.0/session)
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为我们使用了自定义的会话处理程序,该处理程序将写入数据库。

PHP7发生了什么变化?

Cha*_*man 6

在这种情况下,PHP警告会引起误解,因为会话未写入该目录。

在评估自定义会话处理程序的返回值时,PHP7比PHP5.6严格。如果该写方法返回FALSE,则在调用session_write_close时将触发此警告。请参阅:PHP写会话文档。

因此,这里的解决方案是始终从write-session方法返回TRUE。如果有错误,最好通过异常而不是返回值来管理。

  • 准确地说:PHP 5中有一个错误,未正确检查返回值,PHP 7修复了该错误。:)参见https://wiki.php.net/rfc/session.user.return-value (2认同)