localhost ではすべて問題ありませんが、Session::instance() を呼び出そうとすると、デプロイ時に" Error reading session data " というエラーが表示されます。私の間違いはどこですか?多分それはサーバーの問題かKohanaのバグですか?
4 に答える
私の場合、サーバーの問題です。昨日も同様の問題がありましたが、これが解決方法です。
- 最初に、エラー処理を false に設定します (bootstrap.php では、error => false に設定します)。
- ブラウザを再度更新してください。私は C:\xampp\tmp に書き込みエラーがありました。「tmp」フォルダーが見つからないことが判明しました(理由はわかりません。おそらく、マウスの悪い習慣による誤った削除です)
- tmp フォルダーの作成、完了:)
ところで、kohana-session ハンドラとして「native」を使用しています。xampp の場合、xampp/apache/conf/extra/httpd-xampp.conf で「SetEnv TMP {your tmp dir here}」を確認できます。他の LAMP スタックは異なる場合があります。
session.php を投稿できますか? 暗号化オプションを使用している場合、暗号化キーを設定しましたか? セッション (ファイル、Cookie、データベース) を保存するためにどのドライバーを使用していますか?
私の問題は、セッション「ネイティブ」コハナ 3.3 にありました。セッションデータの読み取りエラーや壊れたデータなどのエラーが発生しました。$_SESSION
配列からデータをチェックすると、たとえばecho $_SESSION['x']
必要な値があったのに、なぜこれがエラーの読み取りについて教えてくれたのですか?
エラーは次の行に表示されます:$session = Session::instance();
多くの解決策 (php.ini など) を試しましたが、成功しませんでした。私の最初の解決策は次のとおりです。
try{
$session = Session::instance();
}
catch (Exception $e){//do sth. eg. restrt sesion etc..}
しかし、数か月後に別のサーバーで問題が返されたため、これは悪い解決策でした。Database_Exception [ 1030 ]: Got error 28 from storage engine... または Database_Exception [ 126 ]: Incorrect key file for table '/ramdisk/mysql/tmp/#sql_138c_2.MYI'; というメッセージが表示されました。修復してみてください [ SHOW FULL COLUMNS FROM tabe
]
そのため、サーバーに mysl ストレージ ファイル用のスペースがない場合、「セッション データの読み取りエラー」というエラーが表示されます。解決策は、サーバーにスペースを作ることです。私の場合、いくつかの非常に古いファイルといくつかのログ ファイルを削除するだけです。
セッションにデータベース (または ORM) を使用している場合、「セッション データの読み取りエラー」は通常、Kohana がデータベースに接続できないことを意味します。データベースに接続できることを確認します。
セッションにファイルを使用している場合は、PHP がセッションを書き込むフォルダーが書き込み可能であることを確認してください。