トップページがnotfoundになる 投稿する

投稿者:Huckle Berry  投稿日時:2024-02-01 11:27:35
soyoshop2.9.4
phpバージョン 7.4.33

サイトIDを変更したところ、
トップページがnotfoundになってしまいました。
ドメイン/〇〇/
がトップページなのですが、
404notfoundのページを作成しているので、そちらが表示されてしまいます。

404notfoundページを削除すると、

Fatal error: Uncaught TypeError: Argument 1 passed to output_page() must be an instance of WebPage, null given, called in /home/xxxx/xxxxxxx.com//public_html/cms/soyshop/webapp/src/base/SOYShopSiteController.class.php on line 105 and defined in /home/xxxx/xxxxxxx.com//public_html/cms/soyshop/webapp/src/base/controller/output.php:37 Stack trace: #0
/home/xxxx/xxxxxxx.com//public_html/cms/soyshop/webapp/src/base/SOYShopSiteController.class.php(105): output_page(NULL) #1 
/home/xxxx/xxxxxxx.com//public_html/cms/soyshop/webapp/src/base/SOYShopSiteController.class.php(69): SOYShopSiteController->_onNotFound(Object(Exception)) #2 /home/xxxx/xxxxxxx.com//public_html/cms/soyshop/webapp/lib/soy2_build.php(236): 
SOYShopSiteController->execute() #3 /home/xxxx/xxxxxxx.com//public_html/outlet/index.php(10): SOY2PageController::run() #4 {main} thrown in /home/xxxx/xxxxxxx.com//public_html/cms/soyshop/webapp/src/base/controller/output.php on line 37

こちらのエラーが表示されます。

サイトID を変更する際、データベースも修正しました。
投稿者:齋藤毅  投稿日時:2024-02-01 12:13:07
/home/xxxx/xxxxxxx.com//public_html/cms/soyshop/webapp/src/base/SOYShopSiteController.class.php
の105行目にあります
output_page(common_process_before_output(soyshop_get_page_object_by_uri(SOYSHOP_404_PAGE_MARKER), array()));

$webPage = common_process_before_output(soyshop_get_page_object_by_uri(SOYSHOP_404_PAGE_MARKER), array());
if(!is_null(webPage)) output_page($webPage);
に変更してください。

その後にすぐ近くの行の
private function _onNotFound(Exception $e){

private function _onNotFound(Exception $e){
var_dump($e);
に変更した後にトップページを開くとエラーメッセージが変わるはずです。

新たに変更されたエラーメッセージをお伝えください。
投稿者:Huckle Berry  投稿日時:2024-02-01 15:01:44
ありがとうございます。
こちらが表示されました。

object(Exception)#93 (7) { ["message":protected]=> string(26) "this page is 404 notfound." ["string":"Exception":private]=> string(0) "" ["code":protected]=> int(0) ["file":protected]=> string(107) 
"/home/xxxx/xxxxxxx.com/public_html/cms/soyshop/webapp/src/base/SOYShopSiteController.class.php" ["line":protected]=> int(68) ["trace":"Exception":private]=> array(2) { [0]=> array(6) { ["file"]=> string(85) 
"/home/xxxx/xxxxxxx.com/public_html/cms/soyshop/webapp/lib/soy2_build.php" ["line"]=> int(236) ["function"]=> string(7) "execute" ["class"]=> string(21) "SOYShopSiteController" ["type"]=> string(2) "->" ["args"]=> array(0) { } } [1]=> array(6) { ["file"]=> string(64) "/home/xxxx/xxxxxxx.com/public_html/outlet/index.php" ["line"]=> int(10) ["function"]=> string(3) "run" ["class"]=> string(18) "SOY2PageController" ["type"]=> string(2) "::" ["args"]=> array(0) { } } } ["previous":"Exception":private]=> NULL }

Warning: Use of undefined constant webPage - assumed 'webPage' (this will throw an Error in a future version of PHP) in /home/xxxx/xxxxxxx.com/public_html/cms/soyshop/webapp/src/base/SOYShopSiteController.class.php on line 107

Fatal error: Uncaught TypeError: Argument 1 passed to output_page() must be an instance of WebPage, null given, called in /home/xxxx/xxxxxxx.com/public_html/cms/soyshop/webapp/src/base/SOYShopSiteController.class.php on line 107 and defined in /home/xxxx/xxxxxxx.com/public_html/cms/soyshop/webapp/src/base/controller/output.php:37 Stack trace: #0 
/home/xxxx/xxxxxxx.com/public_html/cms/soyshop/webapp/src/base/SOYShopSiteController.class.php(107): output_page(NULL) #1 /home/xxxx/xxxxxxx.com/public_html/cms/soyshop/webapp/src/base/SOYShopSiteController.class.php(69): SOYShopSiteController->_onNotFound(Object(Exception)) #2 /home/xxxx/xxxxxxx.com/public_html/cms/soyshop/webapp/lib/soy2_build.php(236): 
SOYShopSiteController->execute() #3 /home/xxxx/xxxxxxx.com/public_html/outlet/index.php(10): SOY2PageController::run() #4 {main} thrown in /home/xxxx/xxxxxxx.com/public_html/cms/soyshop/webapp/src/base/controller/output.php on line 37
投稿者:齋藤毅  投稿日時:2024-02-01 15:58:09
this page is 404 notfound.
上記のエラーですが、単純に指定したページが存在していない時に表示されるエラーになりまして、PHPのエラーではなくSOY Shopが意図的にエラーにしたものです。

サイトIDを変更したところ、トップページがnotfoundになってしまいました。
とありますが、サイトIDの変更の手順に誤りがあるかもしれません。

サイトIDの変更は何処かを参考にして行ったという事はありますか?
もし参考にしたページがあればお伝えください。
投稿者:Huckle Berry  投稿日時:2024-02-01 16:03:56
https://saitodev.co/article/SOY_Shop%E3%81%AEURL%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95/

こちらで変更いたしました。

その後、ようこそSOY CMSへ!
の画面でsoyshopに表示されるURLが前のままだったので、
データベースで元URLを検索し、出てきた箇所を新しいURL(ディレクトリ)に変更いたしました。
投稿者:齋藤毅  投稿日時:2024-02-01 16:13:42
データベースで元URLを検索し、出てきた箇所を新しいURL(ディレクトリ)に変更いたしました。
上記の対応をする時に、サイトIDの変更であれば同じテーブルにあるdata_source_nameカラムの値も変更しておく必要があります。

ただ、この対応のみではおそらく今回の問題は解決しないと思います。

this page is 404 notfound.
のエラーになっていますので、トップページが存在していない、もしくはトップページが非公開になっていないかを確認してみてください。
投稿者:Huckle Berry  投稿日時:2024-02-02 12:44:07
サイトIDは、変更しておらずです。

トップページが非公開はどこで設定しますか?

「ページ設定」から、一度トップページを削除し、また新たに作成いたしました。
削除前も、削除後も、
ページURLを_home
でナビゲーションページで作成しております。
投稿者:齋藤毅  投稿日時:2024-02-02 14:06:22
最初のやりとりに
サイトIDを変更したところ、トップページがnotfoundになってしまいました。
とありますが、サイトIDは変更していないということで良いでしょうか?

トップページが非公開はどこで設定しますか?
失礼しました。
SOY Shopの方ではページの非公開の機能はありませんでした。

「ページ設定」から、一度トップページを削除し、また新たに作成いたしました。
上記の内容はこちらでも試してみましたが、報告にあります現象は再現しませんでした。

挙がっている情報から原因特定は難しいです。
投稿者:Huckle Berry  投稿日時:2024-02-02 21:49:42
失礼いたしました!

変更したのはサイトIDではなく、サイトURLです!

サイトIDは、前のまま
ディレクトリを変更いたしました。
FTPで、フォルダを変更し、データベースでURLを書き換えいたしました!

ディレクトリの変更がしたい。といった要望なのですが・・・。
投稿者:齋藤毅  投稿日時:2024-02-03 05:28:41
ディレクトリを変更したということであれば、pathbuilderという機能が正常に働かなくなった可能性があります。
難しい内容になりますが、一応SOY Shop内で使用しているpathbuilderの解説ページのURLを載せておきます。
https://saitodev.co/soycms/soy2/tutorial/190

pathbuilderの動作を確認したいので、
/CMSインストールディレクトリ/soyshop/webapp/src/base/controller/func.php
の26行目付近の
$uri	= $pathBuilder->getPath();
$args = $pathBuilder->getArguments();

$uri	= $pathBuilder->getPath();
$args = $pathBuilder->getArguments();
var_dump($_SERVER["DOCUMENT_ROOT"]);
var_dump($uri);
var_dump($args);
に変更して、トップページにアクセスして、ページの上の方に表示された値をお伝えください。
※var_dump($_SERVER["DOCUMENT_ROOT"]);の出力結果は載せなくて良いです。
投稿者:Huckle Berry  投稿日時:2024-02-05 09:16:02
ありがとうございます。

string(6) "outlet" array(0) { }

これでしょうか。
その後のエラーメッセージは前のものと同じです。

outletは変更後のディレクトリ名です。
投稿者:齋藤毅  投稿日時:2024-02-05 09:27:28
string(6) "outlet" array(0) { }
こちらはトップページを開いた時のものでしょうか?
outletというのはサイトIDを指しますか?

最初に出力された値にoutletはありましたか?
投稿者:Huckle Berry  投稿日時:2024-02-05 09:45:57
outletはサイトIDではないです。
サイトIDはonlineshopです。

ショップのURLである
https://www.xxx.com/outlet/
にアクセスした場合に出力された値です。

最初に出力された値は、outletはなく、
/home/xxx/xxx/public_html/
のパスが表示されています。

https://www.xxx.com/onlineshop/
から
https://www.xxx.com/outlet/
への変更を希望しております。
投稿者:齋藤毅  投稿日時:2024-02-05 10:37:21
https://www.xxx.com/onlineshop/
から
https://www.xxx.com/outlet/
への変更を希望しております。
上記の件ですが、サイトIDの変更の操作を行わなければなりません。
今回はサイトURLの変更を行ったとのことですが、サイトURLの変更では上記の要望を満たす事は出来ません。

サイトIDを変更したければ、同一サーバ上のSOY CMS上でサイトの引っ越しを行ってください。
※サイトID:onlineshopからサイトID:outletのサイトにデータを引っ越し

下記のURL先の内容が参考になります。
サーバの引っ越し(SOY Shop)
ログインして投稿する