1. エラー内容

先日Wordpress5.5の更新が来ていたため、Wordpressの更新と併せてプラグイン「amazon-s3-and-cloudfront」と「amazon-s3-and-cloudfront-tweaks」の更新を行ったところ、「サイトに重大なエラーがありました。」と表示された際の備忘録です。これらのプラグインはOCIでオブジェクトストレージから画像を読み込む為に利用しています。

環境
  1. Ubuntu 20.04 LTS
  2. WordPress 5.5
  3. amazon-s3-and-cloudfront 2.4.1
  4. amazon-s3-and-cloudfront-tweaks 0.4.0

2. 原因

amazon-s3-and-cloudfrontのversion 2.4からstorage-provider.phpというファイルが追加されているらしく、こちらからの呼び出しの際に、呼び出し元と呼び出し先の引数の数が異なる為でした。デバッグ時のエラーは以下です。

PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to function Amazon_S3_and_CloudFront_Tweaks::minio_s3_url_domain(), 5 passed in /www/wp-includes/class-wp-hook.php on line 287 and exactly 6 expected in /www/wp-content/plugins/amazon-s3-and-cloudfront-tweaks/amazon-s3-and-cloudfront-tweaks.php:314
Stack trace:
#0 /www/wp-includes/class-wp-hook.php(287): Amazon_S3_and_CloudFront_Tweaks->minio_s3_url_domain()
#1 /www/wp-includes/plugin.php(206): WP_Hook->apply_filters()
#2 /www/wp-content/plugins/amazon-s3-and-cloudfront/classes/providers/storage/storage-provider.php(664): apply_filters()
#3 /www/wp-content/plugins/amazon-s3-and-cloudfront/classes/amazon-s3-and-cloudfront.php(2456): DeliciousBrains\WP_Offload_Media\Providers\Storage\Storage_Provider->get_url_domain()
#4 /www/wp-content/plugins/amazon-s3-and-cloudfront/classes/amazon-s3-and-cloudfront.php(2328): Amazon_S3_And_CloudFront->get_attachment_provider_url()
#5 /www/wp-content/plugins/amazon-s3-and-cloudfront/classes in /www/wp-content/plugins/amazon-s3-and-cloudfront-tweaks/amazon-s3-and-cloudfront-tweaks.php on line 314

3. 対応内容

3-1. エラーの特定

エラーの特定にはWordpressのデバッグモードを利用しました。

  1. WordPressにホストしているサーバにログインし、Wordpressフォルダ直下のwp-config.phpを修正します。
    修正前

    define( 'WP_DEBUG', false );
    define( 'WP_DEBUG_LOG', false );
    
    修正後

    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    
  2. Webサイトにアクセスし、エラーを発生させます。
  3. debug.logを確認します。エラーログはデフォルトでは/wordpress-root-dir/wp-content/debug.logに出力されます。
  4. エラー対処(今回は問題モジュールの特定と修正を実施。)

3-2. モジュールの無効化

管理画面を含むWebサイトが操作できませんでしたので、モジュールの無効化はcliから実施しました。wp-cliをインストールし利用しました。

wp-cliのインストール

WordPress環境ではphpが既にインストール済ですので、公式サイトの手順のまま対応可能です。

無効化及びステータスの確認等は以下のコマンドで実施可能です。

//インストールプラグインのステータス確認
sudo wp --allow-root plugin status
//プラグインの無効化
sudo wp --allow-root plugin deactivate amazon-s3-and-cloudfront-tweaks
//プラグインの有効化
sudo wp --allow-root plugin activate amazon-s3-and-cloudfront-tweaks

3-3. エラー箇所の修正

引数の数が問題でしたので、引数の数と呼び出し先の引数を修正しました。

引数のpreviewは元々利用していないので、プラグインの機能に影響はありません。”amazon-s3-and-cloudfront-tweaks”側の”amazon-s3-and-cloudfront-tweaks.php”を修正します。

修正前

add_filter( 'as3cf_aws_s3_url_domain', array( $this, 'minio_s3_url_domain' ), 10, 6 );

function minio_s3_url_domain( $domain, $bucket, $region, $expires, $args, $preview ) {
修正後

add_filter( 'as3cf_aws_s3_url_domain', array( $this, 'minio_s3_url_domain' ), 10, 5 );

function minio_s3_url_domain( $domain, $bucket, $region, $expires, $args ) {

4. 参考URL

コメントを残す

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)