便利なプラグイン、「Advanced Custom Fields」ですが、先日気が付いたんですが、なぜかある一定量を超えてしまうと、項目の追加登録が出来なくなってしまうんです。
大よそですが、どのタイトルのフィールドも50~60個くらいを登録すると、それ以降追加できないんです!
また、他のサーバーで100個くらい登録していたデータが入ったSQLをインポートしました。
データの登録自体は問題なくできたのですが、Advanced Custom Fieldsの項目を追加したり修正してしまうと、項目数が50個という感じで、本来100個あった内容の半分くらいが消えて無くなってしまいます。
うん、致命的です!w
で、調べてみると、PHP5.3.9以降から追加された、max_input_vars(POST できる上限数)が1000とリミットを設けられているようで、これが追加させるのを阻んでいるという事がわかりました。
詳しいことは省きますが、これはDOS攻撃をうける可能性を軽減させるためとの事です。
そんなこと言っても使えないと困るので、今回はこのリミット数を少し上げて解決したいと思います。
今回のポイントはmax_input_varsの設定数を変更させるという事です。
デフォルトではこの数値が1000になっています。
max_input_varsの設定を直接php.iniで行える場合には、max_input_varsに指定されている
max_input_vars = 1000
を
max_input_vars = 2000
といった具合に変更します。
これでも登録が出来なかったり、削除されてしまう場合には、ご自身の環境にあわせて数字を調整してみてください。
また、max_input_vars の設定が.htaccess からも変更ができるサーバーであれば、
php_value max_input_vars 2000
といった感じで.htaccessに追加してあげてください。
ちなみに、今回自分が悩みに悩んだのが、使っているサーバーがCORE SERVERだったという事です。
というのが、CORE SERVERでは.htaccessに指定を行うとエラー画面となってしまったのです。つまり、.htaccessからのmax_input_varsの変更は許可していないという事でしょう…。
仕方ないので、今度はphp.iniの設定を変更してみました。
.fast-cgi-binの中にある、今回はPHP5.3xだったので、「php53.ini」を編集。
見てみると、max_input_varsの項目がありません…?
仕方ないので、max_input_vars = 2000 という記述を追加してアップロードするも…。。。
変化なし、相変わらず項目が追加できず削除されてしまう…。
設定が反映されているのか確認するために、info.phpというファイルをアップし、PHPの設定内容を確認してみる。
ちなみに、info.phpの中には以下のPHPコードを記述することで情報を表示できるようになります
<?php phpinfo(); ?>
見てみると…。
う~ん、変わってない。1000と表示されています。
ちなみに、左側が今回の自分の環境の設定で、右側がサーバー側で基本として設定されている項目です。うまくいけば、左側の部分の数字が変わらなければなりません…。
その後も、色々とphp53.iniファイルや、別のファイルも変更を試してみるのですが変化なし…。悲しい。。
※どなたか、CORE SERVERのphp.iniファイルの修正方法に詳しい方、コメント頂けると幸いです。mm
という事で、php.iniも.htaccessからも変更できないという事で、あきらめの境地になっていたのですが、1つ光り輝く情報を見つけました!
それは、「.user.ini」という更なる別の設定ファイルをセットするという方法です!
ちなみに、.htaccessの内容を.user.iniに移行するというわけではなく、.htaccessとは別に.user.iniというファイルを設置するという事です。
記述方法は、php.iniと同様のmax_input_vars = 2000 という具合に記述します。
これをアップすると…。
無事、max_input_varsの上限を変更することができました!
とりあえず良かった!!
本当は、セキュリティのことを考えるとこの数値の変更はお勧めしないので、後ほど全体的な構成を考え直したいと思います。今回はとりあえずという事で…。
Advanced Custom Fieldsで項目の追加ができない方は、一度試してみると良いかもしれません!
0 件のコメント:
コメントを投稿