WPML
สถานะ
เปิด
รายงานสำหรับ
WPML Multilingual CMS 4.7.0
แท็กหัวข้อ
Bug

ภาพรวมของปัญหา

WPML 4.7 มีปัญหาความเข้ากันได้กับปลั๊กอินที่ใช้ PSR/Log 3.0 เช่น Rollbar เมื่อทั้ง WPML และ Rollbar เปิดใช้งานอยู่ การรันคำสั่ง WP-CLI (เช่น wp --info) จะทำให้เกิดข้อผิดพลาดร้ายแรงเนื่องจาก method signature ไม่ตรงกันในคลาส DebugFileLogger

PHP Fatal error:  Declaration of WPML\\PHP\\Logger\\DebugFileLogger::log($level, $message, array $context = []) must be compatible with Psr\\Log\\AbstractLogger::log($level, Stringable|string $message, array $context = []): void in ...\\wp-content\\plugins\\sitepress-multilingual-cms\\vendor\\wpml\\wpml\\lib\\Php\\Logger\\DebugFileLogger.php on line 8

วิธีแก้ปัญหาชั่วคราว

โปรดตรวจสอบให้แน่ใจว่าได้สำรองข้อมูลไซต์ทั้งหมดของคุณก่อนดำเนินการต่อ


  • เปิดไฟล์ …/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/wpml/lib/Php/Logger/DebugFileLogger.php
  • แทนที่:
    namespace WPML\PHP\Logger;
    
    class DebugFileLogger extends \Psr\Log\AbstractLogger {
    
    
      public function log( $level, $message, array $context = array() ) {
        if ( ! defined( 'WP_DEBUG' ) || ! WP_DEBUG ) {
          return;
        }
    
        $log = date( 'Y-m-d H:i:s' ) . ' [' . $level . '] ' . $message . PHP_EOL;
        \error_log( $log );
      }
    
    
    }

  • ด้วย:
    namespace WPML\PHP\Logger;
    
    use Psr\Log\AbstractLogger;
    use Stringable;
    
    class DebugFileLogger extends AbstractLogger {
    
      public function log($level, $message, array $context = []): void {
        if ( ! defined( 'WP_DEBUG' ) || ! WP_DEBUG ) {
          return;
        }
    
        $log = date( 'Y-m-d H:i:s' ) . ' [' . $level . '] ' . (string) $message . PHP_EOL;
        \error_log( $log );
      }
    
    }

ปัญหาที่ทราบแล้วทั้งหมด →