- ステータス
- 未解決
- 報告対象
- WPML Multilingual CMS 4.6.4
- トピックタグ
- Bug
問題の概要
OpCacheキャッシュエンジンを使用しているサーバーでWPML 4.6.4にアップデートすると、バックエンドの使用時に予期しない致命的なエラーが発生する可能性があります。特にデプロイメントパイプラインを使用している場合に発生します。
2023/06/22 02:36:16 [error] 359706#359706: *507646 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught TypeError: WPML\User\UsersByCapsRepository::__construct(): Argument #2 ($languagePairs) must be of type WPML\User\LanguagePairs\ILanguagePairs, WPML_Language_Pair_Records given, called in .../wp-content/plugins/sitepress-multilingual-cms/classes/container/class-config.php on line 63 and defined in .../wp-content/plugins/sitepress-multilingual-cms/classes/user/UsersByCapsRepository.php:18
回避策
続行する前に、サイトの完全なバックアップを取得していることを確認してください。
オプション1
PHPサーバーを再起動すると、この問題は解決するはずです。サーバープロバイダーに連絡し、PHP-FPMサービスの再起動をリクエストしてください。オプション2
1. 新しいファイルが存在するか確認する- ../wp-content/plugins/sitepress-multilingual-cms/classes/language/class-wpml-language-pair-records.phpを開きます。
- ファイルが正しく配置されているか確認します。14行目に以下のコードが含まれている必要があります:
class WPML_Language_Pair_Records implements ILanguagePairs {以下ではなく:
class WPML_Language_Pair_Records { - そうでない場合は、デプロイプロセスに問題があることを示しているため、確認する必要があります。
代わりに、その特定のファイルに対してOPCacheを無効化することもできます。
- これをHTTP経由で実行されるスクリプトから実行します(CLI/SSHからではありません):
opcache_invalidate( '/wp-content/plugins/sitepress-multilingual-cms/classes/language/class-wpml-language-pair-records.php', true);
- /wp-content/plugins/sitepress-multilingual-cms/classes/フォルダーを開きます。
- 大文字の/Language/フォルダーが残っていないか探します。
- 残っている場合は、
/Language/ディレクトリを削除し、/language/ディレクトリにWPML 4.6.6リリースのファイルが含まれていることを確認してください。
問題が解決しない場合は、WPMLサポートにご連絡ください。その際、 phpinfo()の内容をお送りいただけると非常に助かります。