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' );
先の項目で
と書きましたが、この「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型のカラムに影響が出ます。具体的にはモデル設定のカラムタイプで「バイナリ」を選択している部分が対象です。