WooCommerce PHP8.1 エラー修正

WooCommerce PHP8.1 エラー修正

WooCommerce PHP8.1 エラー修正 についての記事です。

WooCommerce利用でPHP8.1にバージョンアップした場合、投稿やページの新規作成、更新などができなくなる場合がありました。
解決しましたので、覚え書きとして投稿します。
#サーバーによって違いがある現象なのか、PHPのバージョンにより、一律に起こりうるエラーなのかはわかりません。

弊社の環境

いくつかサーバーの契約をしていますが、今回はVPSです。
VPS は、Conoha VPS KUSANAGI推奨のメモリー 4GBです。


(アフィリエイトリンクです)

CentOS9 + KUSANAGI の環境です。

KUSANAGIのバージョンは、

KUSANAGI Version 9.4.9-1.el9

(KUSANAGIのバージョンを調べる方法は、kusanagi -V コマンドです)

事の発端 WooCommerce PHP8.1 エラー修正

先日、VPSにログインし、dnf upgrade コマンドで、PHP 7.4 → PHP8.1 にバージョンアップしたところ、WoocommerceをインストールしたWordPressで、投稿ができなく、また更新もできなくなりました。固定ページも同様でした。

それでは困りますので、最初は、原因がWooCommerceにあるとはわからずに、すべてのプラグインをオフにして、一つ一つ確認をしていったところ、WooCommerceに問題がありそうだ、というジャッジになりました。

WoocommmerceのPlugins ディレクトリを調べたところ、やはり、PHP8.1にアップデートしたら問題が発生、という趣旨の書き込みが多数。しかも、WooCommerceサイドと思われる担当の方は、問題が再現しない、との事で把握されていない様子でした

そこで、使用中のテーマのサポートページを調査したところ解決法を発見しました。

#役に立てばうれしいですが、必ずしも効果があるとは断言できません。当方で責任はとれませんので、自己責任でお願いします。

日本語ページもありましたので、そちらで引用、抜粋します

問題は、PHP 8 と WooCommerce の互換性が低いことにあります。幸いなことに、かなり簡単な修正があります。問題を解決するには、次のいくつかの手順を実行するだけです。

コードをコメントアウトしてください 行番号 99 ファイル内

wp-content/plugins/woocommerce/src/Internal/Admin/WCPayPromotion/Init.php
次のようになります。

# $ordering[ $id ] = $is_empty ? 0 : ( min( $ordering ) – 1 );

と、ここまでになります。

WooCommerce PHP8.1 エラー修正 まとめ

WooCommerce PHP8.1 エラー修正 これは、WooCommerceを構成する PHPファイルの1行をコメントアウトするだけなので、作業としては、簡単ではあります。

しかし、この影響がどこに及ぶのか、そういったことは弊社では調査していません。また、本番環境のWoocommerceで、いきなり試さないことをおすすめします。

また、自己責任でということを、うるさいようですが、繰り返しておきます。