EC-CUBE2系で受注明細を追加しようとするとunsupported operand types string + stringというエラーが発生しました。

これはPHP8で文字列と文字列をプラス記号やマイナス記号で結合しようとした時に発生するエラーです。

[/admin/order/edit.php] Fatal error(E_ERROR): Uncaught TypeError: Unsupported operand types: string - string in /var/www/app/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php:745
Stack trace:
#0 /var/www/app/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php(270): LC_Page_Admin_Order_Edit->lfCheckError(Object(SC_FormParam))
#1 /var/www/app/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php(146): LC_Page_Admin_Order_Edit->action()
#2 /var/www/app/html/admin/order/edit.php(28): LC_Page_Admin_Order_Edit->process()
#3 {main}
thrown on [/var/www/app/data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php(745)] from 172.28.0.1

原因

エラーが出た該当の部分では、

// 最終保持ポイント
$arrValues['total_point'] = $objFormParam->getValue('point') - $arrValues['use_point'];

というようになっていて、ポイント数の変数が文字列になっているというために発生していました。

修正方法

簡単な修正方法は変数を(int)のように数値にキャストすることです。

$arrValues['total_point'] = (int)$objFormParam->getValue('point') - (int)$arrValues['use_point'];
日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

EC-CUBEカスタマイズに関するお問い合わせはこちら


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ