カスタムエイリアスプラグインの致命的エラーに付きまして 投稿する

投稿者:おさる  投稿日時:2021-12-29 12:05:52
SOY CMS3.2.0.14を使用しております。
PHPは8.0.12となります。

ページ>ブログページ一覧>新着情報>投稿タブ
と辿りますと以下の致命的エラーが出て各記事へのリンクができなくなってしまいます。
何か対策はございますでしょうか。

DETECT DATE: 2021-12-29T11:52:24+09:00

MESSAGE: Uncaught Error: Call to undefined method Page::getEntryPageURL() in /***/soycms/common/site_include/plugin/custom_alias/custom_alias.php:134
Stack trace:
#0 /***/soycms/common/util/CMSPlugin.class.php(308): CustomAliasPlugin->onCallCustomField_inBlog()
#1 /***/soycms/soycms/cache/3.2.0.14_cache_EntryPage__page_4b1ddcd48cf5ac71eea87f04725ed43e_ja.html.php(116): CMSPlugin::callCustomFieldFunctions()
#2 /***/soycms/common/lib/soy2_build.php(7038): include('...')
#3 /***/soycms/common/base/CMSWebPageBase.class.php(129): HTMLPage->display()
#4 /***/soycms/common/lib/soy2_build.php(272): CMSHTMLPageBase->display()
#5 /***/soycms/common/lib/soy2_build.php(236): SOY2PageController->execute()
#6 /***/soycms/soycms/index.php(8): SOY2PageController::run()
#7 {main}
thrown
EXCEPTION TYPE: ErrorException
LOCATION: soycms/common/site_include/plugin/custom_alias/custom_alias.php (134)

SOY CMS Version: 3.2.0.14
SOY CMS Build Date: 2021-12-27T17:27:43+09:00
SOY CMS DB Type: sqlite
SOY2RootDir: /***/soycms/common/
SOY2_DOCUMENT_ROOT: undefined


STACK TRACE
-----------------------
0:soycms_shutdown

()

Server Environment
PHP Version: 8.0.12

PHP SAPI NAME: apache2handler
PHP SAFE MODE: No
SHORT_OPEN_TAG: Yes

MEMORY_LIMIT: 128M Bytes
Memory Usage: 2,095,680 Bytes
4,194,304 Bytes (Real)
2,235,720 Bytes (Peak)
4,194,304 Bytes (Peak, Real)

MAX_EXECUTION_TIME: 30 sec.
POST_MAX_SIZE: 8M Bytes
UPLOAD_MAX_FILESIZE: 5M Bytes

mb_string: Yes
PDO: Yes
PDO_SQLite: Yes
PDO_MySQL: Yes
Standard PHP Library: Yes
SimpleXML: Yes
JSON: Yes
Services_JSON: No
ZIP: Yes
ZipArchive: Yes
Archive_Zip: No
OpenSSL: Yes
HASH: Yes
GD: Yes

Module/CGI Module
Rewrite OK

USER_AGENT: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
REQUEST_URI: /soycms/soycms/index.php/Blog/Entry/11
SCRIPT_NAME: /soycms/soycms/index.php
PATH_INFO: /Blog/Entry/11
QUERY_STRING:

DOCUMENT_ROOT: /***/
SCRIPT_FILENAME: /***/soycms/soycms/index.php

SOY CMS Options
SOYCMS_ALLOWED_EXTENSIONS: txt,php,pdf,doc,docx,xls,xlsx
SOYCMS_ALLOW_PHP_SCRIPT:
SOYCMS_SKIP_MOBILE_RESIZE: 1
SOYCMS_BLOCK_LIST: EntryBlockComponent
LabeledBlockComponent
MultiLabelBlockComponent
SiteLabeledBlockComponent
SOYCMS_TARGET_DIRECTORY: /***/
SOYCMS_TARGET_URL: undefined
SOYCMS_ADMIN_ROOT: undefined
SOYCMS_LANGUAGE: ja
投稿者:齋藤毅  投稿日時:2021-12-30 05:45:34
エラーの報告をありがとうございます。
PHP8.1対応に伴うコードの最適化の確認の見落としでした。

修正したものを下記のページからダウンロードできるようにしました。
https://saitodev.co/soycms/
投稿者:おさる  投稿日時:2022-01-05 09:14:56
齋藤毅様

お世話になっております。
お陰様でエラー表示はされなくなったのですが、既存の動的ページへのリンクが外れた状況は続いており、全くのお手上げ状態です。
もちろん静的ページにはリンクしておりますし、弊社サイトの3サイトあるうちの2サイトは動的ページへのリンクも正常に機能しております。
1サイトのみ動的ページへのリンクがすべて外れた状態になっております。
news/という配下にある動的ページ、具体的には更新情報になりますが、リンク元ページにリンク自体は作成されるのですがリンク先がNot Foundとなり、閲覧不可となっております。
また、同動的ページの各国語版がリンクが外れたままとなっております。
私の方で何か出来ることはございますでしょうか。

SOY CMSはその後新板が配布されているご様子ですので切り替えましたが、上記問題は解決されませんでした。
投稿者:齋藤毅  投稿日時:2022-01-05 10:28:16
他のプラグインに何らかの問題がありそうな気がします。
/CMSインストールディレクトリ/common/site_include/CMSPageController.class.phpの151行目付近に
$this->onNotFound();
というコードがありますので、この箇所を
var_dump($e);
$this->onNotFound();
にしてNot Foundになるページを開いてみて下さい。

エラーが表示されましたら、エラー内容を教えて下さい
投稿者:おさる  投稿日時:2022-01-05 10:49:50
齋藤毅様

お世話になりっぱなしで恐縮です。
ダンプ表示のためにコードを書き換えましたが、ダンプ表示(エラー表示)はされずにNot Foundのままです。
何度か再読み込みをし、キャッシュの削除も試みたのですが…他に対応策はございますでしょうか。
ご面倒をおかけしますが、何卒よろしくお願いいたします。
投稿者:齋藤毅  投稿日時:2022-01-05 10:54:31
SOY CMSから出力されるNotFoundであれば、今回の対応でエラーメッセージが出力されるはずなのですが、レンタルサーバの方から出力されたNotFoundページであれば、.htaccessの方の記述に何らかの違いがあるかもしれません。

取り急ぎ、NotFoundのページのキャプチャを頂いても良いですか?
投稿者:おさる  投稿日時:2022-01-05 11:18:02
齋藤毅 様

お世話になります。
なるほど、.htaccessの問題もあり得るのですね。
まずはNot Foundのキャプチャをお送りいたします。
投稿者:齋藤毅  投稿日時:2022-01-05 11:21:10
キャプチャをありがとうございます。
これはSOY CMSのキャプチャではないので、サーバ側で何らかのエラーが発生している可能性があります。

共有サーバをご利用中であればサーバ側のコンパネでエラーメッセージが確認できるはずです。
エラーメッセージがあれば内容を教えて下さい。
投稿者:おさる  投稿日時:2022-01-05 11:48:42
齋藤毅 様

お世話になり恐縮です。
サーバ側ではエラーは発生していないように見受けられます。
他に何か対処できることは無いでしょうか?

例えば以下のようなプレビューでも404が出ております。
https://xxxxx/soycms/soycms/index.php/Page/Preview?uri=news/article/195

追記です。
.htaccessをリネームしたところ、動的ページで
500 Internal Server Error
が出ます。
何らかのヒントになりますでしょうか。
投稿者:齋藤毅  投稿日時:2022-01-05 12:13:23
サーバ側ではエラーは発生していないように見受けられます。 
サーバ側でエラーログが残っていないのであれば、こちらから辿る術がありません。

ご利用中のサーバ会社の名前 + NotFoundで検索をしてみて下さい。
何らかのヒントが見つかるかもしれません
投稿者:おさる  投稿日時:2022-01-05 12:39:18
齋藤毅 様

お世話になっております。
かしこまりました、一度検索をかけてみます。
投稿者:おさる  投稿日時:2022-01-05 12:56:49
齋藤毅 様

再びログファイルに検索をかけてみたところ、以下のようなエラーを発見いたしました。
何らかのご参考になるでしょうか。
お忙しい中誠に恐縮ですが、何卒よろしくお願い申し上げます。

[Wed Jan 05 11:51:58.860488 2022] [core:error] [pid 86257] [client xxx.xxx.xxx.20:0] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: https://xxxxxxx/
[Wed Jan 05 11:52:00.669978 2022] [core:error] [pid 84947] [client xxx.xxx.xxx.20:0] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: https://xxxxxxx/
投稿者:おさる  投稿日時:2022-01-05 13:22:06
齋藤毅 様

お騒がせしました。自己解決いたしました。
.htaccessの表記が間違っておりました。
間違ったリクエストがなされていたのが原因だとか。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} xxxxxxxx
RewriteRule ^(.*)$ /index.php?pathinfo=$1&%{QUERY_STRING}

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

以下の表記を加えて正常にアクセスが出来ました。

#.htaccess
# リクエストしたファイルが存在せず,かつディレクトリも存在しない場合,rewriteする
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L,QSA]

齋藤毅 様
ありがとうございました。
投稿者:齋藤毅  投稿日時:2022-01-05 13:30:01
解決したとのことで良かったです。
ログインして投稿する