a-blog cms Ver. 3.0 系 の APCuキャッシュに関する不具合について


a-blog cms Ver. 3.0系で、 APCu というphp共有メモリキャッシュ について問題が見つかりました。 同じphp実行ユーザーで動作させる a-blog cms 環境がサーバー内に複数ある場合、別々の a-blog cms でもキャッシュが共有されてしまう可能性がございます。

対象となる条件 (AND条件)

  • ご利用のサーバーでAPCuが有効の場合
  • 同サーバー内に複数の a-blog cms を設置
  • .envファイルで、キャッシュにAPCuを指定している場合(デフォルト設定)

問題への対応方法1

Ver. 3.0.7 へのアップデートを行う事で、この問題は解消されます。

問題への対応方法2

APCuキャッシュが問題になりますので、APCuキャッシュを利用しないようにします。
ドキュメントルートにある 「.env」 ファイルを編集します。各項目のキャッシュドライバーに 「apcu」 が指定されている場合は、他のドライバーに変更します。

デフォルトの状態だと、以下の3つに 「apcu」 ドライバーが選択されています。

  • テンプレートキャッシュ (ACHE_TEMPLATE_DRIVER)
  • フィールド情報キャッシュ (CACHE_FIELD_DRIVER)
  • 一時キャッシュ(CACHE_TEMP_DRIVER)

これは、他のドライバーに変更します。 テンプレートキャッシュ、フィールド情報キャッシュは、「file」、一時キャッシュは「memory」が推奨です。

# テンプレートのキャッシュをするドライバーを選択します
CACHE_TEMPLATE_DRIVER=file
CACHE_TEMPLATE_NAMESPACE=template
CACHE_TEMPLATE_LIFETIME=2678400

# フィールド情報のキャッシュをするドライバーを選択します
CACHE_FIELD_DRIVER=file
CACHE_FIELD_NAMESPACE=field
CACHE_FIELD_LIFETIME=86400

# 一時キャッシュで利用するドライバーを選択します
CACHE_TEMP_DRIVER=momory
CACHE_TEMP_NAMESPACE=temp
CACHE_TEMP_LIFETIME=10800

この度はご迷惑をおかけしてしまい申し訳ございません。
該当する内容の場合、バージョンアップなどご対応のほどよろしくお願いいたします。
今後とも a-blog cms をよろしくお願いいたします。

カスタムユニットを使って「SVG ユニット」を作る方法

最近は SVG ファイルがサイト上でも使われるようになってきていますが、残念ながら a-blog cms の画像ユニットには SVG ファイルを扱うことができません。今回は、カスタムユニットを利用して「SVG ユニット」を作ってみましょう。

今回用意するカスタムユニット

カスタムユニットの実装には、1つだけ追加する方法(custom.html)と、複数設定する方法(extend.html)があります。今回は複数設定する方法での実装を行います。

カスタムユニット名:custom_svg

  • SVGファイル : {svg@path}
  • サイズを指定 : {svg_x} , {svg_y}

管理側のフォームの実装

カスタムユニットの HTML を書くには、カスタムフィールドメーカー に用意されている「カスタムユニット」のフォームから準備します。

ファイルの設置場所は /themes/*テーマ名*/admin/entry/unit/extend.html で、カスタムフィールドメーカーで作った HTML を <!-- BEGIN custom_svg --> 〜 <!-- END custom_svg --> で囲みます。


種類 タイトル フィールド名
ファイル SVGファイル svg_file
テキスト 横幅 svg_x
テキスト 縦幅 svg_y

extend.html

<!-- BEGIN custom_svg -->

 * カスタムフィールド タグ *

<!-- END custom_svg -->

管理ページの設定

コンフィグの3ヶ所の設定をおこないます。「アップロード許可ファイル拡張子」は、忘れがちになりますので注意してください。

ユニット追加ボタン

管理ページ > カスタマイズ管理 > コンフィグ > エントリー > 編集設定 > ユニット追加ボタン に「custom_svg」というモードを設定します。 ラベル部分は「SVG」とすることで(SVG)ボタンが追加されることになります。


ユニット設定

管理ページ > カスタマイズ管理 > コンフィグ > エントリー > ユニット設定 の画面の最後に何も設定していない空の「SVG」ユニットが用意されていますので、(SVG)のボタンを一度クリックして SVG ユニットを追加します。


アップロード許可ファイル拡張子

管理ページ > カスタマイズ管理 > コンフィグ > エントリー > 編集設定 >アップロード許可ファイル拡張子の項目に追記します。SVGファイルはテキストファイルになりますので、「テキストファイルのアップロードを禁止」のチェックボックスを外し、ドキュメントに「 , svg 」と追加します。


エントリー編集画面での確認

この段階で SVG カスタムユニットを追加して保存が可能かどうかをテストしてみましょう。ユニットに(SVG)ボタンが追加されていて追加すると、カスタムフィールドメーカーの HTML のままであれば、以下のようなフォームが表示されます。 まずは項目が正しく出るのを確認して、OKであればスタイル等の調整をしていきましょう。


表示側のテンプレートの実装

unit.html には、あらかじめ extend.html の include の記述が準備されていますので、指定の場所に extend.html を用意します。

/include/unit/extend.html

<!-- BEGIN unit#custom_svg -->
<img src="%{ARCHIVES_DIR}{svg_file@path}" width="{svg_x}" height="{svg_y}" alt="svg">
<!-- END unit#custom_svg -->

これで、正しく設定ができていれば SVG ファイルを表示が可能になります。縦横のサイズを設定してみたり、片側だけ設定してどのように表示になるかを検証してみてください。

画像ユニットと同等までのカスタマイズ

時間があれば、以下のような実装を試してみましょう。

配置、代替えテキスト、リンクなどを設定できるようにすると以下のようなフォームを作ることができるようになります。ここまで作って何かの時に使えるパーツとして持っておいてみては、いかがでしょうか。



/include/unit/extend.html

<!-- BEGIN unit#custom_svg -->
<div class="column-image-{svg_align}">
	<!-- BEGIN_IF [{svg_link}/nem] -->
	<a href="{svg_link}"><!-- END_IF -->
		<img src="%{ARCHIVES_DIR}{svg_file@path}"<!-- BEGIN x:veil --> width="{svg_x}"<!-- END x:veil --><!-- BEGIN svg_y:veil --> height="{svg_y}"<!-- END svg_y:veil --> alt="{svg_alt}">
		<!-- BEGIN_IF [{svg_link}/nem] -->
	</a>
	<!-- END_IF -->
</div>
<!-- END unit#custom_svg -->

ファイルを開く

svg_unit.zip (2KB)

Ver. 3.0.7 リリースのお知らせ


この記事では、2022年2月25日にリリースした Ver. 3.0.7 の修正内容について紹介いたします。

現在お困りの問題に該当する項目がありましたら、お早めにバージョンアップのご検討をお願いいたします。

Ver. 3.0.7 リリースノート

  • CMS-5858 UTSUWAのjsがbundle時にwarningが出ている問題を修正
  • CMS-5859 action.htmlのボタンにid属性を追加
  • CMS-5860 位置情報有効にするとブログ管理のページがPHPエラーで表示されなくなる問題を修正
  • CMS-5861 メディア機能でGif画像がアップロードできない問題を修正
  • CMS-5862 サマリー系モジュールで、カスタムフィールドが entryFieldブロックの中で表示できない問題を修正
  • CMS-5863 サマリー系モジュールで、関連エントリー機能 or PHP8でエラーが起きる可能性がある問題を修正
  • CMS-5867 Ver. 3.0 系でメールマガジンが送信できない、ダウンロードモジュールが動作しない問題を修正
  • CMS-5868 一括変更フィールド設定のツールチップのスタイル崩れ
  • CMS-5869 Siteテーマのアクセシビリティ改善
  • CMS-5870 検索結果の空ページに新規作成ボタンを設置
  • CMS-5876 APCu のキャッシュが 同空間の 他a-blog cmsのキャッシュと衝突する可能性を修正
  • CMS-5875 Entry_Summary系モジュールで、エントリのカスタムフィールドが entryFieldブロックの中でしか展開できない問題を修正
  • CMS-5873 ユーザー編集画面で、メルマガのチェックボックスが表示されない場合がある問題を修正
  • CMS-5882 Tag_Filterモジュールのコンフィグ「リンク」の設定値が反映されない問題を修正
  • CMS-5881 .htaccess の リダイレクト設定を調整
  • CMS-5879 beginnerテーマのフォームの初期バリデート設定が間違っている問題を修正
  • CMS-5883 ダッシュボードでログイン履歴が表示されない問題を修正
  • CMS-5880 User_GeoListがエラー発生して正常に動作しない問題を修正
  • CMS-5884 拡張アプリのアップデート時に他の拡張アプリのステータスがおかしくなる可能性がある問題を修正
  • CMS-5833 エントリー項目設定のサブカテゴリーの「選択肢を子カテゴリーに限定」設定が反映されずカテゴリーの設定をみてしまう問題を修正

主なリリースノートの詳細な内容

CMS-5876 APCu のキャッシュが 同空間の 他a-blog cmsのキャッシュと衝突する可能性を修正

詳細については下記のブログに記載されていますので、キャッシュの衝突にお困りの方は下記のブログをご一読ください。


CMS-5875 Entry_Summary系モジュールで、エントリのカスタムフィールドが entryFieldブロックの中でしか展開できない問題を修正

Ver. 3.0.7 以前のVer. 3.0系では、Entry_Summary系モジュールで loop を使用する際、entryFieldブロックで loop を囲まなければ展開できませんでした。

こちらを見直し、新バージョンでは entryFieldブロックなしでも loop が動作するよう修正しました。

旧式の記述
<!-- BEGIN entry:loop -->
<!-- BEGIN entryField -->
<!-- BEGIN hoge:loop -->
{hoge}
<!-- END hoge:loop -->
<!-- END entryField -->
<!-- END entry:loop -->
新式の記述
<!-- BEGIN entry:loop -->
<!-- BEGIN hoge:loop -->
{hoge}
<!-- END hoge:loop -->
<!-- END entry:loop -->

CMS-5833 エントリー項目設定のサブカテゴリーの「選択肢を子カテゴリーに限定」設定が反映されずカテゴリーの設定をみてしまう問題を修正

Ver. 3.0.7 以前は、コンフィグ/編集設定 内「エントリー項目設定」における、サブカテゴリー「選択肢を子カテゴリーに限定」が正常に機能しておりませんでしたが、今回バージョンで正しく設定できるよう修正しました。



最後に

この度はご迷惑をおかけしてしまい申し訳ございませんでした。該当する問題がありましたら、お早めにバージョンアップのご検討をお願いいたします。 また、迅速にご報告いただいたユーザーの皆さま、誠にありがとうございました。

今後もご報告いただいた内容に対して真摯に受け止め修正と改善を行ってまいりますので、よろしくお願いいたします。