WPML
状态
未解决
报告针对
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 {


  • 如果不是这种情况,则表明部署过程存在问题,您需要进行检查。
2. 如果您发现文件内容正确

您也可以选择使该特定文件的 OPCache 失效。


  • 从 http 服务的脚本(而不是 CLI/SSH)运行以下命令:
    opcache_invalidate( '/wp-content/plugins/sitepress-multilingual-cms/classes/language/class-wpml-language-pair-records.php', true);

3. 最后,验证您是否没有残留的 /Language/ 文件夹

  • 打开您的 /wp-content/plugins/sitepress-multilingual-cms/classes/ 文件夹。

  • 查找是否残留带有大写字母的 /Language/ 文件夹。

  • 如果是这种情况,请删除 /Language/ 目录,并确保 /language/ 目录中包含来自 WPML 4.6.6 版本的文件。

如果问题仍然存在,请联系 WPML 支持。如果您能 向我们发送您的 phpinfo() 内容,将对我们非常有帮助。

所有已知问题 →