私が試したこと:
- キャッシュの消去。
- モジュールを無効にして有効にしました。
registry_rebuild
、module_missing_message_fixer
、variablecheck
モジュールで試してください。
update.php
を実行しようとすると、まだ以下のエラーが発生します。
通知:unserialize():261行の\ sites\all\modules\entity\includes\entity.controller.incの1298バイトのオフセット668でのエラー
警告:57行目の\ sites\all\modules\rules\includes\rules.core.incの空の値からデフォルトオブジェクトを作成しています
致命的なエラー:767行目の\ sites\all\modules\rules\includes\rules.plugins.incの未定義のメソッドstdClass :: events()への呼び出し
デバッグは、問題の考えられる原因をすべて排除する技術です。以下は、問題の本当の原因を見つけるのに役立ついくつかの試みです...
あなたの質問への答えを見つけるのに役立つかもしれないものは、 Rulesdebugging...ルールsettings、 Rules に付属するデバッグ機能を少し試してください。少なくとも「ルール評価ログ」を確認してください(実行中のルールロジックが、実際にそのロジックの期待と一致していることを確認するため)。
Rulesdebuggingの詳細については、「 How can I display the value of条件内の変数? "。
Rules モジュールを「無効にする」のではなく(再度有効にするまで問題を解決できる可能性があります)、有効のままにしてください。ただし、すべてのアクティブ(有効)ルールのdisableから始めます。
問題の原因となっているのがカスタムルールであり、アクティブなルールがない場合は、アクティブなルールをすべて無効にした後も、問題は解消されているはずです。その場合は、ルールを1つずつ再度有効にして、有効にしたルールが実行されたことを確認するためのテストを行ってください。問題が再び発生するカスタムルールに到達するまで、これを繰り返します。次に、そのルールを再度無効にし、問題が再び発生する他のルールがあるかどうかを確認します。最後に、問題が発生しないようにルールを調整して、問題が表示されないようにします。解決できない場合は、そのルールを再度有効にせず、別の方法を考えてください。
また、予期しないウォッチドッグエントリがないか確認してください。何が起こっているのかを知る手がかりになる場合があります。
ルールモジュールを再度ダウンロードして、再試行してください。したがって、基本的にRulesフォルダーを削除し、手動で再ダウンロードするか、drush
コマンドを使用します。例:
_drush -y dl rules
_
2.x-devバージョンの場合、_--dev
_を追加します。
その後、キャッシュをクリアします。 MemcachedまたはRedisなどの外部キャッシュを使用している場合、それもクリアします。その後、再試行してください
ソース: 未定義のメソッドstdClass :: events()への呼び出しのインストール時のエラー 。
上記の方法で問題が解決しない場合、 unserialize()
の通知は、構成データが破損していることを示しています。 PHP docsに従って:
渡された文字列がシリアル化できない場合、
FALSE
が返され、_E_NOTICE
_が発行されます。
したがって、基本的にはエンティティのテーブル(_$this->entityInfo['base table']
_/_$schema['fields']
_)とそれが参照する行(fields
column)を識別する必要があります。理想的には、unserialize()
呼び出しの直後にブレークポイントまたは手動コードを設定します。
つまり、 _includes/entity.controller.inc
_ ファイルを編集し、load()
メソッドを見つけて、以下のように変更します。
_ $record->$field = unserialize($record->$field);
if ($record->$field === FALSE) { // Check if field is unserializeable.
var_dump($record->$field, $record, $field); // Or use dpm(), dd(), etc.
// exit(); // Optional exit to improve the formatting.
}
_
特定のパターンが見つかった場合は、次の方法で破損した行を見つけます。
_drush sql-dump --ordered-dump | grep some_unique_field_pattern
_
次に、破損したシリアル化データを修正するか、バックアップから復元するか、破損したフィールドデータを削除します。