[PHP8のみ] 管理操作ログが見られない

質問全般・改善要望
返信する
okazunori
メンバー
メンバー
記事: 13
登録日時: 2020年12月21日(月) 21:15

[PHP8のみ] 管理操作ログが見られない

投稿記事 by okazunori »

お世話になっております。
エラーが出ましたのでご報告します。

【現象】
注:PHP7.4だと正常に動きます
管理操作ログで「検索」を押すとエラー表示になります。

【環境】
さくらのレンタルサーバ
MODX 1.2.0J
PHP 8.3.8
MySQL 8.0.40

【エラーメッセージ】

コード: 全て選択

Parser - Viewing logging line:306
« PHP Parse Error »
PHP error debug
Error : Undefined array key -2
ErrorType[num] :	WARNING[2]
File :	/*/manager/actions/report/logging.static.php
Line :	306
Source :	$paging .= $array_row_paging[$current_row - 2];
LastQuery :	SELECT * FROM `modx`.`modx_manager_log` ORDER BY timestamp DESC, id DESC LIMIT 0, 100
Basic info
REQUEST_URI :	/manager/index.php?a=13&message=&searchuser=0&action=0&itemid=&itemname=&datefrom=&dateto=&nrresults=100&log_submit=検索の履歴
Manager action :	13 - Viewing logging
Referer :	https://*/manager/index.php?a=13&message=&searchuser=0&action=0&itemid=&itemname=&datefrom=&dateto=&nrresults=100&log_submit=%E6%A4%9C%E7%B4%A2%E3%81%AE%E5%B1%A5%E6%AD%B4
User Agent :	Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.2 Safari/605.1.15
Backtrace
1	include_once()
manager/index.php on line 471
okazunori
メンバー
メンバー
記事: 13
登録日時: 2020年12月21日(月) 21:15

[PHP8のみ] 管理操作ログが見られない

投稿記事 by okazunori »

下記のようにすることでログが表示されました。
"Implicit conversion from float to int loses precision"のエラーが表示される時があるのでキャストしています。
おそらく総数を表示数で割ってページ数を出しているので小数点以下は不要だとは思うのですが、単純に切り捨てるだけでいいのか自信がありません。

コード: 全て選択

manager/actions/report/logging.static.php
291 -               $current_row = evo()->input_get('int_cur_position', 0) / $int_num_result;
291 +               $current_row = (int)(evo()->input_get('int_cur_position', 0) / $int_num_result);
 |
305                 if ($pagesfound > 6) {
306 -                   $paging .= $array_row_paging[$current_row - 2];
307 -                   $paging .= $array_row_paging[$current_row - 1];
308 -                   $paging .= $array_row_paging[$current_row];
309 -                   $paging .= $array_row_paging[$current_row + 1];
310 -                   $paging .= $array_row_paging[$current_row + 2];
306 +                   $paging .= $array_row_paging[$current_row - 2] ?? '';
307 +                   $paging .= $array_row_paging[$current_row - 1] ?? '';
308 +                   $paging .= $array_row_paging[$current_row] ?? '';
309 +                   $paging .= $array_row_paging[$current_row + 1] ?? '';
310 +                   $paging .= $array_row_paging[$current_row + 2] ?? '';
311                 } else {
返信する