- 상태
- 미해결
- 보고된 제품
- WPML Multilingual CMS 4.7.0
- 주제 태그
- Bug
문제 개요
WPML 4.7은 Rollbar와 같이 PSR/Log 3.0을 사용하는 플러그인과 호환성 문제가 있습니다. WPML과 Rollbar가 모두 활성화되어 있을 때 WP-CLI 명령(예: wp --info)을 실행하면 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 ); } }