「スタック」を移動してしまい元に戻したい

2021年11月16日 at 10:53

concrete バージョン 8.4.2

作業中「スタック」がフルサイトマップのディレクトリ以下に移動してしまいサイト、管理画面で不具合が出てしまった。
元に戻すことは可能でしょうか。

添付: 20211116_.jpg
タグ:

Re: 「スタック」を移動してしまい元に戻したい

2021年11月17日 at 9:14
サーバーのバックアップから復旧して対応します。
 

Re: 「スタック」を移動してしまい元に戻したい

2021年11月17日 at 9:45
こんにちは。
取り急ぎ。

同じか別のシステムページか忘れてしまいましたは、それを移動してしまった時、
DB を直接いじる必要があったような気がします。

バックアップから復旧できるのであれば、そちらの方が安全ですので、バックアップからの復旧をお願いします。

間違っていたらすいませんが、すべての権限がある super admin ユーザーで作業されていますか?今後の予防策として、一番最初に作られる admin ユーザーは、あくまでも本当に必要な時だけの作業用としてキープし、普段は別の管理者グループ所属のユーザーで作業されるなどが良いと思います。
 

Re: Re: 「スタック」を移動してしまい元に戻したい

2021年11月17日 at 13:09
ご返答ありがとうございます。
やはり管理画面からルートに移動はできなかったのですね。

作業はsuper adminでなく、管理者グループのユーザーが作業中、間違って移動してしまったとのことでした。
今後の対策としては、管理者グループのサイトマップ権限を制限して調整してみます。

お手数お掛け致しました。
 

Re: 「スタック」を移動してしまい元に戻したい

2021年11月19日 at 15:56
度々すみません。
データベースのバックアップでの復旧ができないとのことで再度質問です。
※エラー発生日がレンタルサーバーのバックアップサービスで復元できる日数を超えていた。

現時点で確認している問題は
スタックで管理していたパーツが表示できないことと、
新規スタックを作成しようとするとエラー(添付画像)が出てしまうことです。

システム復帰にはデータベースを直接編集する必要があるとのことですが、
どこを編集すれば良いかわかりますでしょうか。

「スタック」の場所で、カノニカルURLが違っている(他のサイトは"ドメイン/%21stacks")ことを確認していますがここを書き換えれば戻るのでしょうか?

よろしくお願いします。
# concrete5 Version
Core Version - 8.4.2
Version Installed - 8.4.2
Database Version - 20180716000000

# concrete5 Packages
Block Designer (3.2.0), Block Designer Pro (3.0.0), Clear Clipboard (1.0.0), ExchangeCore reCAPTCHA (1.1.1), Login Return (1.0), Open Graph Tags Lite (2.1.3), Page Selector Attribute (2.0), Pixel Theme (2.1.0), Suiton Confirm Form (1.2.0), Whale OWL Carousel (2.5.7.9), XML (CIF) Importer (0.2.1)

# concrete5 Overrides
//省略

# concrete5 Cache Settings
Block Cache - On
Overrides Cache - On
Full Page Caching - On - If blocks on the particular page allow it.
Full Page Cache Lifetime - Every 6 hours (default setting).

# Server Software
Apache

# Server API
cgi-fcgi

# PHP Version
7.0.32

# PHP Extensions
bcmath, bz2, calendar, cgi-fcgi, Core, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, imagick, imap, intl, json, libxml, mbstring, mcrypt, mysqli, mysqlnd, openssl, pcre, PDO, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, Reflection, session, SimpleXML, soap, sockets, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlrpc, xmlwriter, xsl, zip, zlib

# PHP Settings
max_execution_time - 30
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - -1
max_input_vars - 1000
memory_limit - 128M
post_max_size - 100M
sql.safe_mode - Off
upload_max_filesize - 100M
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
pgsql.max_links - Unlimited
pgsql.max_persistent - Unlimited
session.cache_limiter - <i>no value</i>
session.gc_maxlifetime - 7200
soap.wsdl_cache_limit - 5
 

Re: 「スタック」を移動してしまい元に戻したい

2021年11月19日 at 18:31
(すいません、当初掲載していた方法では、Stack のサイトマップ上の位置は戻ったんですが、Stack の編集ができなくなっていたので、方法を一旦削除しました)
 

Re: 「スタック」を移動してしまい元に戻したい

2021年11月19日 at 18:43
すいません

> 現時点で確認している問題は
> スタックで管理していたパーツが表示できないことと、
> 新規スタックを作成しようとするとエラー(添付画像)が出てしまうことです。

こちらのエラーはスタックの位置を元に戻してもでてしまいますね・・・。
ちょっと確認します。
 

Re: 「スタック」を移動してしまい元に戻したい

2021年11月20日 at 20:10
ご確認、ご連絡ありがとうございます。
公開済みの企業サイトのため、システム復帰作業に取りかかれるように準備します。
 

Re: 「スタック」を移動してしまい元に戻したい

2021年12月6日 at 15:45
お忙しいところご対応ありがとうございます。

移動してしまった「Stacks」の権限が限定的に変わってしまっていたことを確認しました。
サイトマップから「スタック」の権限設定で「ゲスト」を追加することで、
サイト上でのスタック管理箇所の表示、管理画面から「新規スタック」で発生していたエラーが解消しましたことを共有いたします。
 

Re: 「スタック」を移動してしまい元に戻したい

2021年11月21日 at 14:44
すいません、僕が心当たりがあったのは「下書き」ページを移動した時の対処方法でした。

スタックについては、ちょっとわからないので、一旦、英語のフォーラムにも投稿してみました。

http://forums.concretecms.org/t/accidentally-moved-stack-parent-under-home-page/1678

ちょっとそこの返答も待ってみますね。
 

Re: 「スタック」を移動してしまい元に戻したい

2021年12月3日 at 20:36
うーん、英語フォーラムもちょっと反応がないですね・・・。

すいません、僕もこの現象を調べるためのまとまった時間が取れず・・・

他の人も可能だったらヘルプをお願いします。
 

Re: 「スタック」を移動してしまい元に戻したい

2021年12月6日 at 17:01
ご連絡ありがとうございます!

> 移動してしまった「Stacks」の権限が限定的に変わってしまっていたことを確認しました。
> サイトマップから「スタック」の権限設定で「ゲスト」を追加することで、
> サイト上でのスタック管理箇所の表示、管理画面から「新規スタック」で発生していたエラーが解消しましたことを共有いたします。

よかったです。
であれば、次に、位置を戻すだけですね。

一度、削除してしまいましたが、
サイトマップ上の位置を戻すのは、データベースの中の情報を直接探して変更しなければいけません。

直接 Pages テーブルの中にある Stack ページのデータをさがし、 cParentID の数字を 0 に設定することで、場所が戻ると思います。

対象の cID レコード番号は最初にインストールされたコンクリのバージョンによって変わります。
8.4.2 であれば「157」だと思います。
とにかく、cFileName が「/!stacks/view.php」なレコードを確認してください。


以下 SQL 文で直接実行できます。
その場合は、

Update `Pages` Set cParentID = 0 where cFilename = "/!stacks/view.php";

これで実行できると思います。

バックアップをおとりになってからの実施をお願いします。

ご確認いただき、ありがとうございました。
 

Re: 「スタック」を移動してしまい元に戻したい

2021年12月14日 at 17:18
本番環境でConcrete システムの復帰ができましたので情報共有いたします。
ご協力いただきありがとうございました。

(以下、作業内容)

本番環境のデータを用いたステージング環境でのテストを行った結果、PagesテーブルとPagePathsテーブルの内容を編集することで、問題を解決することができることがわかりました。
現在のConcrete5のDBをコピーしたステージング環境で検証を行った結果、Pages および PagePaths テーブルのstackに関連するレコードを編集することで、不具合を改善することができた。スタックの子レコード、孫レコード以下まで修正することが必要だった。
Pagesテーブルについては、以下を行った。

UPDATE `Pages` SET cParentID = 0 WHERE cFilename = "/!stacks/view.php";
UPDATE `Pages` SET cIsSystemPage = 1 WHERE cFilename = "/!stacks/view.php";
UPDATE `Pages` SET cIsSystemPage = 1 WHERE cParentID = 154;
UPDATE `Pages` SET siteTreeID = 0 WHERE cFilename = "/!stacks/view.php";
UPDATE `Pages` SET siteTreeID = 0 WHERE cParentID = 154;

UPDATE `Pages` SET cIsSystemPage = 1 WHERE cParentID IN (...);

UPDATE `Pages` SET siteTreeID = 0 WHERE cParentID IN (...);

UPDATE `Pages` SET cIsSystemPage = 1 WHERE cParentID IN (...);

UPDATE `Pages` SET siteTreeID = 0 WHERE cParentID IN (...);

UPDATE `Pages` SET cIsSystemPage = 1 WHERE cParentID IN (...);

UPDATE `Pages` SET siteTreeID = 0 WHERE cParentID IN (...);

PagePaths テーブルについては、以下を行った。

UPDATE `PagePaths` SET cPath = REPLACE(cPath, "/「移動してしまったディレクトリ」/!stacks", "/!stacks") WHERE cPath LIKE "%!stacks%"

上記を行った結果、以下の問題を解決し、観測範囲ではその他の不具合も見受けられない状態にすることができた。

i スタックがシステムページのツリー配下でなく、各言語のツリーの配下に位置してしまう
ii スタックの新規追加を行うとデータベースのconstraintに違反するというエラーが出る
iii スタックがダッシュボードの一覧ページに表示されない