バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > Invalid page number. Page: 0: $page must be positive non-zero integer

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kaihatsu1
投稿日時: 2024/5/13 11:16
対応状況: −−−
新米
登録日: 2024/5/13
居住地:
投稿: 2
Invalid page number. Page: 0: $page must be positive non-zero integer
[EC-CUBE] EC-CUBE4.2.1
[WEBサーバ] Apache2.4.x
[DBサーバ] AWS RDS or Aurora(MySQL8.0系)
[フレームワーク] Symfony5.4系
[ブラウザ] Chrome
[導入プラグインの有無] 有
■有効となっているプラグイン
・Coupon Plugin for EC-CUBE42
・PGマルチペイメントサービス決済プラグイン
・データ移行プラグイン
・お届け先住所登録数変更プラグイン
■無効となっているプラグイン
 ・会員項目追加プラグイン
 ・メールマガジンプラグイン
 ・マイページ請求書/納品書/領収書プラグイン4.2
 ・商品レビュー管理プラグイン
 ・おすすめ商品管理プラグイン
 ・関連商品プラグイン
 ・売上集計プラグイン
 ・Securitychecker42
 ・Site Kit プラグイン
■未インストールプラグイン
 ・EC-CUBE Web API プラグイン(4.2系)
 ・商品並び替えプラグイン PLUS EC-CUBE(4.2系)
[カスタマイズの有無] 有(エラー発生対象ファイルのカスタマイズをしていない)
[現象]
 ローカルと検証環境は検知できず、本番環境のみ発生されている。
------------------------------エラー内容は以下の通り----------------------------
["Invalid page number. Page: 0: $page must be positive non-zero integer","/var/www/html/vendor/knplabs/knp-components/src/Knp/Component/Pager/Exception/PageNumberInvalidException.php",11,"#0 /var/www/html/vendor/knplabs/knp-components/src/Knp/Component/Pager/Paginator.php(59): Knp\\Component\\Pager\\Exception\\PageNumberInvalidException::create(0)\n#1 /mnt/efs/cache/prod/ContainerW9iHTC5/PaginatorInterface_82dac15.php(15): Knp\\Component\\Pager\\Paginator->paginate(Object(Doctrine\\ORM\\QueryBuilder), 0, 1000, Array)\n#2 /var/www/html/src/Eccube/Controller/SitemapController.php(159): ContainerW9iHTC5\\PaginatorInterface_82dac15->paginate(Object(Doctrine\\ORM\\QueryBuilder), 0, 1000)\n#3 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(163): Eccube\\Controller\\SitemapController->product(Object(Symfony\\Component\\HttpFoundation\\Request), Object(ContainerW9iHTC5\\PaginatorInterface_82dac15))\n#4 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(75): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#5 /var/www/html/vendor/symfony/http-kernel/Kernel.php(202): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#6 /var/www/html/index.php(83): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#7 {main}"] [GET, /sitemap_product_0.xml, 10.0.0.25, NULL, Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)]
--------------------------------------------------------------------------------
該当PageNumberInvalidException.phpクラスファイルを確認しましたが、どうやら商品表示?関連するところで0で渡したことでエラーとなったように見えます。
最初は商品が全部非表示状態だからそういうエラーが出ると推測しましたが、実際商品公開してもそのエラーもしばらく出てきました。一定の期間を経ちますとエラーがなくなります。


ネットでも調べましたが解決方法が分からず、一応フロント画面と管理画面が正常に使えていますので現状は業務支障にならないすでが、リスクがあるので潰したいです。
解決方法をご教示を頂ければ幸いです。
tattsu
投稿日時: 2024/5/13 11:49
対応状況: −−−
仙人
登録日: 2023/12/23
居住地:
投稿: 357
Re: Invalid page number. Page: 0: $page must be positive non-zero integer
確かに不具合ですね。
src/Eccube/Resource/template/default/sitemap_index.xml.twigで
引用:
{% for p in 1..productPageCount %}
<sitemap>
<loc>{{url('sitemap_product_xml', {page: p})}}</loc>
<lastmod>{{Product.update_date|date_format('','c')}}</lastmod>
</sitemap>
{% endfor %}


となっている部分をif文で囲むように修正すれば良いかと思います。

引用:

{% if 0 < productPageCount %}
{% for p in 1..productPageCount %}
<sitemap>
<loc>{{url('sitemap_product_xml', {page: p})}}</loc>
<lastmod>{{Product.update_date|date_format('','c')}}</lastmod>
</sitemap>
{% endfor %}
{% endif %}


----------------
-------------------

EC-CUBEカスタマイズ・バージョンアップ・不具合修正(状況調査は無料)
ゴールドパートナー。

kaihatsu1
投稿日時: 2024/5/14 9:42
対応状況: −−−
新米
登録日: 2024/5/13
居住地:
投稿: 2
Re: Invalid page number. Page: 0: $page must be positive non-zero integer
tattsuさん

早速なご回答はありがとうございます!
確かにIF文で0の場合通さないようにすれば解決できますね。
ちなみに、このIF文を追加することで他に影響がないと思って良いでしょうか。
そもそもローカル環境で再現しにくい事象なので、
その引数に数値を直接渡してテストしか方法がないので、デグレ要素が懸念しております。
tattsu
投稿日時: 2024/5/14 11:33
対応状況: −−−
仙人
登録日: 2023/12/23
居住地:
投稿: 357
Re: Invalid page number. Page: 0: $page must be positive non-zero integer
"Invalid page number. Page: 0: $page must be positive non-zero integer"とエラー出ているので0より大きい数を渡すことになりますね。

今回のように具体的に問題を書いていただければアドバイスできるのですが、実際にみていないサイトではなかなか他に問題がないか判断はできないので、色々確認してみてください。


----------------
-------------------

EC-CUBEカスタマイズ・バージョンアップ・不具合修正(状況調査は無料)
ゴールドパートナー。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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
1536
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.