質問 > その他 > 決済モジュールから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 引用:
はい、こちらの対応で問題ないと思います。 (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 お手を煩わせてしまい、申し訳御座いません。
早々に対応有難う御座います。 何かとご迷惑をお掛けするかと思いますが、どうか今後とも宜しくお願い致します。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |