PHP5系から7.4にしたらサイト内検索がつかえなくなりました。

再現できましたか!ありがとうございます。

お待たせしました。baserCMSは同梱テーマも普通にPHPで書かれていて、
本体と同様に修正と改善が繰り返されているので、baserCMSをアップデート
する場合は実はテーマも更新する必要があります。方法は下記のとおりです。

thema/フォルダ内の bc_sample フォルダを削除します。
いちおうバックアップはとっておいてください。問題が解決すれば削除してよいです。

lib/Baser/Config/theme/
上記フォルダ内に最新の bc_sample テーマが入っていますので、これを
thema/ フォルダ内にコピーします。

念のために管理画面でキャッシュを削除します。

以上で解決できると思います。

3 Likes

yamamotoさん、いつもご対応ありがとうございます!
PHPの対応処理をしていただいたとのことなのですが、具体的には、どのような処理なのでしょうか?
同環境を作成しても再現しなかったので、作成済みのデータ(記事)の内容に起因して起きたこととしかおもえないのですが。。。
簡単で結構ですので、起きている事情と、対応策(対応いただいた内容)をお教えいただけるとうれしいです。
あと、dbkaiyuさんの場合、使用されているbc_sampleのバージョンは、前バージョン?をベースにカスタマイズされたものですので、新規にアップデートして使用するものではないとおもわれるため、今回のアップデートに伴って必要なファイルのみ差し替える対応になるかと思います。
取り沙汰されていたsearch.phpのみの差し替えでよいのでしょうか?そのあたりも合わせてご教示ください。
以上、たいへんお手数ですがよろしくお願いいたします。

1 Likes

search.phpに限って見ると、今まで上記のような改修が行われています。
上記のうち、今利用しているsearch.phpの改造元になっているのは
2016年11月14日(5d3fa15)の時点のファイルのようです。
$folders = $this->BcContents->getContentFolderList($this->request->params['Site']['id'], ['excludeId' => $this->BcContents->getSiteRootId($this->request->params['Site']['id'])]);

上記のように書かれている部分を

$folders = $this->BcContents->getContentFolderList($this->request->params['Site']['id'], ['excludeId' => [12]]);

上記のように書き換える改造を行なっているようです。つまり excludeId の値を決め打ちで
12 としています。なので最新の search.php の該当部分を探して 12 に変更すると
okということになります。

たぶんこんな感じで、他のファイルも変わっているはずなので、うーん、どうするかですね・・
どこをどう書き換えたのかは、専門のプログラマーならすぐ分かるのですが。
時間があったら、対応作業を行なうための手順をqiitaあたりで書いてみます。

1 Likes

search.phpのどの部分が問題を起こしていたのか、後ほど調べてみます。
もしかすると問題発生の傾向やシステム側での対応方法がつかめるかもしれません。

1 Likes

yamamotoさん、お忙しいところご説明いただきありがとうございます。

dbkaiyuさん
補足しますね。(yamamotoさん、間違ってたらご指摘ください。)
yamamotoさんのご指摘では、今回の件は、dbkaiyuさんが利用さていたbc_sampleテーマが、2016年11月14日(5d3fa15)のリビジョンのものと思われ、今回の事象に限らずテーマ内の複数のファイルにおいて、BaserCMS本体のアップデート、あるいはそれに伴ったサーバー側PHPのアップデートに追従して、同様のPHPの記述の改修が必要な部分が存在するはずだが、現時点では顕在化していないし今後もしないかもしれない。

これらについて抜本的に対応するのであれば、本来、bc_sampleテーマ自体を最新のものに変更する必要があるが、今回の事象のみの対処として、実施するのであれば、search.phpを最新のものに差し替えることで対応できるのではないか?と言うことだと思います。(新たな不具合(主に表示上)を生むかもしれませんが)

で、あわせて、そもそも、search.phpをdbkaiyuさんの方で以前に改変されているため、差し替えた最新のsearch.phpについても、同様の改変が必要と思われ、それがこの部分です。

$folders = $this->BcContents->getContentFolderList($this->request->params['Site']['id'], ['excludeId' => [12]]);
1 Likes

@GUSSAN @yamamoto さん、
いろいろアドバイスありがとうございます。

該当ファイルの更新日時を見て、
自分で触れるわけがないので、
なぜこのファイルを触ったのか調べてみました。

申し訳ないです。どうやら触ってました。

https://forum-archive.basercms.net/modules/newbb/viewtopic.php?topic_id=3118&forum=5#forumpost10350

旧フォーラムで教示頂いたものでした。

もとの改変をおこなっていないものにしたところエラーは出ません。
ただ、カテゴリの指定は必要がない(というか機能してない?)ので消したいところです。

追伸です。
/theme/bc_sample/Elements/widgets/search.php
の最新のものにしても、

2:検索結果から外したいコンテンツがあるため、
コンテンツ管理→オプション→サイト内検索の検索結果より除外する
のチェックボックスを入れました。

3:それでも、検索のカテゴリに出てきます。
カテゴリに表示されているため、
カテゴリを選択して検索が可能ですが、
除外するにチェックを入れているためなのか、
キーワード検索しても検索結果はゼロ件です。

この症状は残ってしまってます。
これが解消されないので前の改変を行ったようです。

返信遅くなりすいません。
改変自体がエラーの要因だったんですね。
であれば、オリジナルの状態のままアップして、不要な検索カテゴリー選択リストをCSS側で display:none で消してしまったらどうでしょう?

2:検索結果から外したいコンテンツがあるため、
コンテンツ管理→オプション→サイト内検索の検索結果より除外する
のチェックボックスを入れました。

3:それでも、検索のカテゴリに出てきます。
カテゴリに表示されているため、
カテゴリを選択して検索が可能ですが、
除外するにチェックを入れているためなのか、
キーワード検索しても検索結果はゼロ件です。

と言うことであれば、それで運用上特に問題ないように思います。

追記:

以下をCSSに追加すれば、非表示になると思います。
コメントアウトもしといた方がいいかもですね。

/* 検索カテゴリーリスト非表示*/
#SearchIndexSearchForm label,
#SearchIndexSearchForm br,
.bca-select {
display: none;
}

1 Likes

本当にお手数をおかけしました。
自分の改変が原因だったなんて・・・

CSSで消せばよいですが、
カテゴリがオプションで制御できないのが
スッキリ?しないままなんですよね。

いろいろご迷惑おかけしました。
解決済みとします。

え?「検索結果より除外する」のチェックを入れれば、不要なカテゴリーは、除外できるんですよね?
その状態で非表示にすれば、検索カテゴリー自体見えないし、検索結果のもヒットしなければ、要件に合うのではないですか?

もともと、ID12決め打ちで検索させてたんですよね?

検索カテゴリ=プルダウンに出てくる名前と思ってるのですが、
オプションで検索から外しても、カテゴリに表示されるのです。

そのため、そのカテゴリを選んで検索すると検索結果なしになります。
また、そのカテゴリに存在してないのに、検索結果で表示されます。

という不具合?が2年前にありまして、今回の事態にまで影響してしまいました。

追伸:CSSを編集しようとすると、HTTP ERROR 500が発生して、CSSが編集できません。

テーマ管理メニュー内のCSS一覧から、編集できないと言う意味でしょうか?
であれば、それは別にトピックをあげられた方がいいと思います。
その上で、直接、サーバーにFTPクライアントアプリなどでアクセスして、編集してはいかがでしょうか?

そうなんです。(涙)

CSS一覧、イメージ一覧、Javascript一覧から、
鉛筆ボタンをクリックしてもいつもの編集画面にならず、
500を返してきます。

デバックモードでみたところ、
全部コピペできないので、太文字表示のとこだけですが、

/lib/Baser/Controller/BcAppController.php on line 541

が表示されてます。

別トピックにします・・・

検索カテゴリ=プルダウンに出てくる名前と思ってるのですが、
オプションで検索から外しても、カテゴリに表示されるのです。

これは、検索カテゴリー選択(プルダウン)のリスト内に表示されていたとしても、プルダウン自体を非表示にするわけですから、そもそも見えないし、当然選択もできませんよね?

そのため、そのカテゴリを選んで検索すると検索結果なしになります。

非表示なので、検索そのものができませんよね?

また、そのカテゴリに存在してないのに、検索結果で表示されます。

残るは、これですが、この意味がよくわかりません。

いつも、言葉が不足して申し訳ございません。

CSSなどで、検索カテゴリを非表示にしたら、問題は解決しますが、

検索のカテゴリを「表示している状態」であれば、
プルダウンからカテゴリが選択できるので、
そのカテゴリで検索ができてしまいます。
検索結果は、検索から外しているので当然ゼロです。

オプションで検索除外を選択したら、
検索カテゴリのプルダウンからも非表示になればよいのですが、
表示されたままなので、この問題があると認識しております。

あと、3番目の問題は、
カテゴリに存在しないのブログのしかも一部(ブログ内のカテゴリの1つだけ)が
検索結果に表示されてしまうというものです。

何か私の設定が悪いのかもしれません。

現在検索カテゴリに表示されているものは、
コンテンツのフォルダ名となっているようです。
そのフォルダ内に存在しないブログなのに、
そのカテゴリ(=フォルダ名)を選択して検索された場合、
フォルダ内にないブログの一部カテゴリだけが検索されてしまうのです。

自分でも書いていて理解できないかもと思いますが、
2年前もこれで悩んで、カテゴリを消したら問題解決!ということで処理した次第です。

ご意向を整理させてください。
あらためてサイトを拝見してみたのですが、ウィジェット欄のサイト内検索に「〇〇一覧」「この〇〇について」が選択可能なカテゴリーとして表示されていました。
「〇〇一覧」と「この〇〇について」は、複数の固定ページのコンテンツをまとめたフォルダですよね。これら(正しくはこれらのフォルダ内の固定ページのコンテンツ)を検索対象から除外したいというご意向であっていますか?

で、対応されてる設定は、コンテンツ一覧からこれら二つのフォルダに対して、「サイト内検索の検索結果より除外する」オプションをチェックされている。

しかし、このいずれかのフォルダ内の固定ページの中のコンテンツが検索にヒットしてしまう。

と言う事情であっていますでしょうか?

上記の内容がご意向に合っているとした場合、以下が私の提案です。

現状のサイト内検索の表示は、

1

のようになっていますよね、

私がカテゴリー選択リストをCSSで消せば、と申し上げてるのは下の画像の状態です。

2

そもそも上の画像の状態は、dbkaiyuさんのイメージと同じではないのではありませんか?
そこで、話が噛み合わないのではないかと思っています。

カテゴリー選択リスト自体をCSSで消した状態で、
かつ、検索対象から除外したいフォルダおよび各固定ページのオプションで検索除外状態にしておけば、検索させたくないカテゴリーはリスト自体が表示されていないので選択できませんし、当然、検索にヒットもしないはず?です。

現在検索カテゴリに表示されているものは、
コンテンツのフォルダ名となっているようです。
そのフォルダ内に存在しないブログなのに、
そのカテゴリ(=フォルダ名)を選択して検索された場合、
フォルダ内にないブログの一部カテゴリだけが検索されてしまうのです。

というご指摘ですが、キャプチャで示したようにCSSでカテゴリー選択リスト自体を非表示にしてしまえば、そもそも「そのカテゴリ(=フォルダ名)を選択して検索された場合」という状況はありません。
あとは、条件指定なしの状態での検索に対して、検索対象外のフォルダ内のコンテンツが検索されない状況になればいいわけですが、その設定は、dbkaiyuさんのお話ぶりでは、フォルダに対してのみ検索除外設定をしているのではないですか?
検索にコンテンツをヒットしないようにするためには、検索対象外としたいコンテンツ、具体的にはフォルダ内の固定ページそれぞれに対して検索除外設定をする必要があります。
そうされているにもかかわらず、検索にヒットしているのであれば、別の不具合と言うことになると思います。

本当は、もっとスマートに対象除外はできるはずですが、そもそも検索対象をID決め打ちで行う設定で不具合を生じたところから始まっていますので、多少力技ですが、このやり方でご意向に沿った検索ができればよしとしませんか?

以上の点で、再度確認お願いします。

上記が解決するとよいでしょうか?後ほど調べてみます。
もしよければ、サイト内検索が使えなくなった件としては解決としていただいて
新しくトピックを投稿し直していただけますでしょうか?
ひとつずつ解決している形にできればと思います。

このトピックの検索が使えないは解決したので「解決済み」としていますので、
最後の部分については、別トピックに立てますね。

皆様ありがとうございました。