2017-04-26 12 views
0

をsession_write_close、私は、このエラーに直面しています:私たちは、データベースへの書き込みカスタムセッションハンドラを使用しているためPHP7セッションの警告は - 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) 

これは、奇数であります。

PHP7では何が変更されましたか?

答えて

1

この状況では、セッションがそのディレクトリに書き込まれていないため、PHPの警告は誤解を招きます。

PHP7は、カスタムセッションハンドラの戻り値を評価する際にPHP5.6より厳しいものです。そのwriteメソッドがFALSEを返した場合、session_write_closeを呼び出すときにこの警告がトリガーされます。参照:PHP write-session documentation.

ここでの解決策は、書き込みセッションメソッドから常にTRUEを戻すことです。エラーが発生した場合は、戻り値ではなく、例外によって最もよく管理されます。

+0

正確には:戻り値が正しくチェックされていないPHP 5にバグがあり、PHP 7はバグを修正しました。 :) https://wiki.php.net/rfc/session.user.return-value – Narf

+0

@Narfこれが可能かどうかはわかりませんが、PHPの警告メッセージはおそらくカスタムの場合に調整する必要がありますセッションハンドラ。既定のセッションディレクトリに書き込みエラーがあるように見えますが、実際のエラーではありません。 –

+0

エラーメッセージに表示されるパスは、 'session.save_path'から来ています。ユーザー空間ハンドラも*使用するはずです - そのため、' SessionHandlerInterface: :open() ' – Narf

関連する問題