コンテンツ入力

このページでは a-blog cms を利用される上でよくはまるトラブルとその解決方法についてご紹介しています。

コンテンツ入力

目次

画像がアップロードできない

画像がアップロードできない現象が発生した場合は、以下の項目を試してみてください。

archives, archives_rev, media ディレクトリに書き込み権限を与える

archives, archives_rev, media ディレクトリ(内部ディレクトリ含め)のパーミッションをWebサーバが書き込めるようになっているかご確認ください。なっていなければ、書き込めるようにパーミッションを変更してください。

画像エンジンを切り替える

ディレクトリのパーミッションを変更しても改善しない場合は、画像エンジンを切り替えてください。画像エンジンは GD と ImageMagick があり、ImageMagick が使える場合は、デフォルトでImageMagickが適用されていますが、GDを適用できるように切り替えてみましょう。

以下のコードを private/config.system.yaml に追記することにより、GDが適用されるようになります。

image_magick : off

画像圧縮で失敗している

画像圧縮ライブラリで使用している「exec」関数が、お使いのサーバーでセキュリティ上の理由により使用できなくなっている可能性があります。 こちらが原因の場合、DEBUG_MODE有効時、以下のようなエラーが出力されます

exec" function is not available. Please check if it is not listed as "disable_functions" in your "php.ini" file.

対応方法1

php.ini で「disable_function」設定を変更し「exec」関数を使用可能にする

対応方法2

画像圧縮機能をオフにする。
private/config.system.yaml に 以下コードを追記ください。

img_optimizer: off

アップロードできないファイルがある

セキュリティ対策で、アップロードできるファイルを制限しています。

アップロードしたいファイルの拡張子を追加するには、管理ページ > コンフィグ > 編集設定 の「アップロード許可ファイル拡張子」の項目にアップロードできないファイルの拡張子を追加してください。

たとえば、ドキュメントの項目にa-blogcms.svgを追加する場合は、すでに記入されている「txt, doc, pdf, ppt, xls, csv」に続けて「txt, doc, pdf, ppt, xls, csv, svg」と入力して変更を保存してください。


ドキュメントの項目に「txt, doc, pdf, ppt, xls, csv, svg」と入力したスクリーンショット

管理ページ > コンフィグ > 編集設定 の「アップロード許可ファイル拡張子」の項目

入力したデータの保存に失敗する

カスタムフィールドやエントリーのユニット数が多い場合、サーバーの設定で制限されている可能性があります。以下の項目を確認してみてください。
現在適用されている設定は、管理ページ > チェックリスト のページで確認できます。

制限



項目 説明 初期値 推奨 アクセスレベル
upload_max_filesize 最大アップロードファイルサイズ 2M 4M PHP_INI_PERDIR
post_max_size 最大POSTサイズ 8M 16M PHP_INI_PERDIR
memory_limit 最大利用メモリーサイズ 128M 128M PHP_INI_ALL
max_file_uploads アップロード出来るファイル数 20 20 PHP_INI_SYSTEM
max_input_vars input要素の最大数 1000 4000 PHP_INI_PERDIR

推奨よりも値が低かった場合は、アクセスレベルを参考に該当のファイルを開いて設定を変更してください。

アクセスレベル

上記の制限の項目は、php.iniや.htaccessなどのファイルで変更することが可能ですが、それぞれ指定されているアクセスレベルによって変更するべきファイルが変わります。
下記の表を参考にして、適切なファイルを開いて目的の制限を変更してください。



アクセスレベル 意味
PHP_INI_USER ユーザースクリプト(ini_setなど)で設定可能なエントリ。.user.ini でも設定可能
PHP_INI_PERDIR php.ini, .htaccess, httpd.conf あるいは、 user.ini で設定可能なエントリ
PHP_INI_SYSTEM php.ini, または httpd.confで設定可能なエントリ
PHP_INI_ALL どこでも設定可能なエントリ

各ファイル別の記述例

各ファイル別の記述例になります。すべて、memory_limitの項目を元にしています。 各設定を変更する際の参考にしてください。



ファイル 記述例
php.ini, .user.ini memory_limit = 256M
.htaccess php_value memory_limit 256M
phpファイル ini_set('memory_limit', '256M');

他の制限で引っかかっている場合もありますので、詳しくは http://php.net/manual/ja/ini.core.php をご覧ください。

エントリー保存時や設定変更時に固まってしまう(Ver. 2系)

* この内容は Ver. 3系では、この機能自体廃止されているので発生しません。

サーバーの構成変更時などに、エントリー保存や設定変更などPOST操作を行うと固まってしまい、タイムアウトエラーが出る時があります。

この場合、ダッシュボードから設定できる「キャッシュ生成リスト」が設定されていないかご確認をお願いします。 この機能は、POST時に自動的にキャッシュを生成するようにHTTPリクエストが飛ぶようになっているのですが、 サーバーの変更でこの機能が動作しなくなってタイムアウトしている可能性が考えられます。


エントリー保存や特定ページで403エラーが出て保存・表示ができない

特定ページ(パスワード変更画面など)や特定の操作(エントリー保存など)で、 403エラー が出て、保存や表示ができない場合、 WAF(Web Application Firewall) が反応している可能性があります。

この場合、一度サーバーのコントロールパネルなどから、WAFを無効にして問題を切り分けてから、WAFの設定を調整していただくか、サーバー管理者にお問合せください。

WAFとは

WAFとはセキュリティ対策の一種で、Web Application Firewall(ウェブ・アプリケーション・ファイアウォール)の略です。 サイトなどのWebアプリケーションの保護に対応します。

GIF画像をアップロードできない

メディア機能などで、PNGやJPEGはアップロードできるが、GIF画像がアップロードできない現象が起こる場合があります。

これは、画像エンジンに GD を使用していて、WebP画像 をサポートしている場合に、サーバー環境によって、GIF画像からWebP画像が生成できずにエラーが出てしまうためとなります。

対策1: GDではなく、ImageMagick に変更する

対策の1つとして、画像エンジンを GD ではなく、ImageMagick に変更する方法があります。(デフォルトは ImageMagick
private/config.system.yaml に以下の記述をすることで、画像エンジンを GDからImageMagickに変更できます。

image_magick : on

注意点として、サーバー環境によっては、ImageMagickを利用できない環境もあります。利用できない環境では、上記設定をしても画像エンジンは GD のままとなります。

対策2:WebP画像サポートをやめる

もう一つの対策は、WebP画像サポートをやめることです。 private/config.system.yaml に以下記述をすることで、WebP画像の生成をやめることができます。

webp_support: off

エントリーなどの編集作業を行なっても、古い情報が表示される場合がある

キャッシュの影響が考えられます。キャッシュドライバーに「APCu」を選択している場合、サーバー環境によってはPHPプロセス毎にキャッシュが確保されてしまい、古いキャッシュが返ってきてしまう問題を確認しています。たとえば、XSERVERの「Xアクセラレーター Ver. 1」や「Xアクセラレータオフ」 を選択している場合(Xアクセラレーター Ver. 2 は大丈夫です)、この環境となります。

このような環境の場合、「.env」ファイルを修正して「APCu」ドライバーを使わないように修正をお願いします。

# テンプレートのキャッシュをするドライバーを選択します
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=memory
CACHE_TEMP_NAMESPACE=temp
CACHE_TEMP_LIFETIME=10800

CMSバージョンアップ後、入力したHTMLがそのまま出力されてしまう

Ver.2.11から、セキュリティ対策としてXSS(クロスサイトスクリプティング)を防止するため校正オプションを指定していた時もエスケープ処理が自動で行われるようになりました。これにより、一部のカスタムフィールドやユニットなどでHTMLタグがそのまま出力されてしまう可能性があります。

詳しくはこちらをご覧ください。 https://developer.a-blogcms.jp/blog/raw211escape.html

エントリーを保存しても、ログアウトしていると変更が反映されない、記事が表示されない

エントリーを保存しても、変更内容が保存されなかったり、新しい記事が表示されない場合があります。 これは、キャッシュが原因であることが多いです。

管理ページ > コンフィグ > キャッシュ設定の「POST時のキャッシュクリア」にチェックがついているかご確認ください。 このチェックがないと即時反映がされない設定になります。


キャッシュについて詳しく確認する