見出し画像

PowerCMS X のアセット(ファイル管理)はデータベースに保存されます

PowerCMS X がデフォルトの状態だと画像やPDFをアップロードするとデータベースにバイナリデータとして保存されます。

一般的なCMSはデータベースではなく、サーバーのディレクトリにファイルがアップロードされると思いますが、PowerCMS X は異なります。

動作

アセット一覧画面から「新しいアセット」ボタンをクリックして、新規登録画面を表示します。

ファイルをドラッグアンドドロップするエリアがありますので、そこにファイルを登録します。

画面下部の「保存」ボタンを押下すると裏側ではデータベースの「テーブル: mt_asset」のカラム「asset_file」に保存されます。(このカラムはバイナリタイプです。)

PowerCMS X のアセット登録画面でステータスが「公開」以外だとファイルを出力しません。ステータスが「公開」だとサーバーのディレクトリにファイルを出力します。

メリット

  • データベースにファイルが保存されているので、サーバーを移転する際にデータベースだけで移行ができます。

  • ファイルの公開予約機能を利用すれば、指定日時にファイルを出力できます。

  • ファイルを出力していない場合に、ブラウザでURLを叩いてもアクセスできないですが、PowerCMS X にログインしていると表示できます。

デメリット

データベースの容量が増えます。世代管理でデータベースのバックアップしている場合はディスク容量に注意が必要です。

データベースに保存しない設定

PowerCMS X アプリケーションディレクトリ直下にある「db-config.php」を開き、以下のコードの部分でコメントアウトを削除します。
/path/to/ の箇所は、/var/www/blob にフォルダを作って、それを指定すればよいかと思います。フォルダは任意の場所で構わないので、アクセス権限を付与しておいてください。(パーミッション 777 など)

// define( 'PADO_DB_BLOB2FILE', true );
// define( 'PADO_DB_BLOBPATH', '/path/to/blob' );

先の項目で

データベースの「テーブル: mt_asset」のカラム「asset_file」に保存されます

と書きましたが、この「asset_file」に保存されていた値を、'/path/to/blob' のフォルダ内に移設したと思ってください。データベースの肥大化は防げてもディスク容量は逆に増えることになります。

データベースに保存しない設定を運用途中から変更した場合

上記の設定に加え、バッチの実行が必要です。以下は PowerCMS X アプリケーションディレクトリが「/var/www/html/PowerCMSX」の参考例です。

cd /var/www/html/PowerCMSX
sudo -u apache php ./tools/PADO/convertBlob2File.php

続いて、PowerCMS X 管理画面にログインして、ビュー一覧にアクセスします。一覧画面のチェックボックスで全選択して、アクションプルダウンから「キャッシュの再コンパイル」を選択し実行します。
最後に全体再構築を実施して完了です。

補足

「db-config.php」を設定した場合は、アセットだけでなく、PowerCMS X で管理する blob型のカラムに影響が出ます。具体的にはモデル設定のカラムタイプで「バイナリ」を選択している部分が対象です。

いいなと思ったら応援しよう!