バージョン選択

フォーラム

メニュー

オンライン状況

127 人のユーザが現在オンラインです。 (97 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 126
tokkchan もっと...

サイト内検索

質問 > その他 > 決済モジュールからSC_FormParam.phpがコールされる時だけE_WARNING

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
bbkids
投稿日時: 2024/10/11 0:34
対応状況: 解決済
常連
登録日: 2014/2/19
居住地:
投稿: 68
決済モジュールからSC_FormParam.phpがコールされる時だけE_WARNING
[EC-CUBE] eccube2.17.2(weekly-20241008)
[PHP] 8.2.12

決済モジュール(asjpayment_recv.php)からSC_FormParam.phpがコールされる時だけ、E_WARNINGが発生します。
(SC_FormParam.phpのコンストラクタ内でE_WARNINGです。決済モジュール以外からのコールでは発生しません。)

■error.log
[/user_data/asjpayment_recv.php] Warning(E_WARNING): Undefined array key 1 on [/xxxxx/data/class/SC_FormParam.php(72)]
[/user_data/asjpayment_recv.php] Warning(E_WARNING): Trying to access array offset on value of type null on [/xxxxx/data/class/SC_FormParam.php(72)]

■SC_FormParam.php の下記の箇所です。
------------------------------------------------------------------
public function __construct()
{
$this->check_dir = IMAGE_SAVE_REALDIR;

$backtraces = debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS, 2);
// 呼び出し元のクラスを取得
$class = $backtraces[1]['class']; // → ■ 72行目 該当箇所です。
$objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance();
if (is_object($objPlugin)) {
$objPlugin->doAction('SC_FormParam_construct', [$class, $this]);
}
}
------------------------------------------------------------------

■決済モジュール(asjpayment_recv.php)では他同様以下の様にコールしているだけです。
------------------------------------------------------------------
$objFormParam = new SC_FormParam_Ex();
$objFormParam->setParam($_POST);
------------------------------------------------------------------

E_WARNINGを消すだけであればSC_FormParam.phpの72行目を以下の様にすればおそらく消えるとは思うのですが、
$class = isset($backtraces[1]['class']) ? $backtraces[1]['class'] : null;
決済モジュール以外からのコールで、E_WARNINGは発生していないので、SC_FormParam.php側に手を入れたくありません。

決済モジュール側で何か考えられる原因が分かる方がおりましたらご教示頂けますようお願い致します。
nanasess
投稿日時: 2024/10/11 9:20
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2325
Re: 決済モジュールからSC_FormParam.phpがコールされる時だけE_WARNING
backtrace のクラス名が入らないとかだと思いますので、決済モジュールのクラス構造やディレクトリ構成があやしい気がしますがいかがでしょうか?
bbkids
投稿日時: 2024/10/11 10:29
対応状況: −−−
常連
登録日: 2014/2/19
居住地:
投稿: 68
Re: 決済モジュールからSC_FormParam.phpがコールされる時だけE_WARNING
実に的確な内容有難う御座います。ご教示頂きました内容をもとに考察しましたところ

決済モジュール「/html/user_data/asjpayment_recv.php」が直接SC_FormParam_Ex();をコールしている為
(class定義されていないasjpayment_recv.phpが直接SC_FormParam_Ex();をコールしている為)、
$backtraces[1]['class'];にクラス名が入らなくてE_WARNINGが発生している事が分かりました。

対処方法はいくつか考えられますが、
asjpayment_recv.phpの処理本体をclass化したファイルを作成し/data/配下のどこかに設置し
asjpayment_recv.php自体はそのclass化した処理本体をコールするのが根本的な解決といったところでしょうか?
本来決済モジュール会社が改修してくれるのが一番良いのでしょうが、多分当面修正は入らないのでそれを自分でやるかどうか考えてしまいます。

E_WARNINGが目障りだけなので、決済モジュール会社の改修が行われるまではあまりスマートではないですがSC_FormParam.php側を自分で以下暫定対処した方が良いよいものか。
-------------------------------------------------------------------------
$class = isset($backtraces[1]['class']) ? $backtraces[1]['class'] : null;
-------------------------------------------------------------------------
一行だけで済むし、これは他に影響はでないと予想されますでしょうか?

nanasess
投稿日時: 2024/10/11 10:40
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2325
Re: 決済モジュールからSC_FormParam.phpがコールされる時だけE_WARNING
引用:

-------------------------------------------------------------------------
$class = isset($backtraces[1]['class']) ? $backtraces[1]['class'] : null;
-------------------------------------------------------------------------
一行だけで済むし、これは他に影響はでないと予想されますでしょうか?


はい、こちらの対応で問題ないと思います。
(PRいただけると嬉しいです)
bbkids
投稿日時: 2024/10/11 11:00
対応状況: −−−
常連
登録日: 2014/2/19
居住地:
投稿: 68
Re: 決済モジュールからSC_FormParam.phpがコールされる時だけE_WARNING
nanasess 様

丁寧で迅速なご対応有難う御座います。
いつも感謝しております。

自信でPRをスムーズに出来ると良いのですが、今時Githubを上手く使いこなせなく本当に申し訳ないのですが代りにPRお願いできませんでしょうか?

本当にお手数おかけして申し訳御座いません、どうぞ宜しくお願い致します。
nanasess
投稿日時: 2024/10/11 12:55
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2325
Re: 決済モジュールからSC_FormParam.phpがコールされる時だけE_WARNING
承知しました。とり急ぎ issues あげておきました
https://github.com/EC-CUBE/ec-cube2/issues/1027
bbkids
投稿日時: 2024/10/11 12:58
対応状況: 解決済
常連
登録日: 2014/2/19
居住地:
投稿: 68
Re: 決済モジュールからSC_FormParam.phpがコールされる時だけE_WARNING
お手を煩わせてしまい、申し訳御座いません。
早々に対応有難う御座います。

何かとご迷惑をお掛けするかと思いますが、どうか今後とも宜しくお願い致します。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は95,949名です
総投稿数は111,638件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2325
5
umebius
2085
6
yuh
1893
7
h_tanaka
1850
8
red
1574
9
mcontact
1535
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.