web-dev-qa-db-ja.com

Wordpressはphp.ini、wp-config、.htaccessのどれを優先しますか。

Wordpress Webサイトの最大アップロード制限を変更したいとします。次の値を指定します。

wp-config.php:128MB php.ini:256MB .htaccess:64MB

それで、Wordpressは必要に応じて処理する間、どれを優先しますか?

10
imranhunzai

これらの各ファイルで何を変更しているのかはあなたの質問から明らかではありませんが、それぞれの場合に upload_max_filesize PHP設定 と推測します。

一般に、設定はこの順序で適用され、それぞれが前の値を上書きします。

  1. php.ini
  2. .htaccessのApacheディレクティブ
  3. ini_set()への呼び出し

ただし、この設定はPHP_INI_PERDIRとして定義されます。これは このページで説明ini_setを使用して設定できないため、wp-config.phpは変更できません。したがって、質問で指定した例では、64MBの.htaccessから値を取得します。

これを確認するには、コードのどこかでecho ini_get('upload_max_filesize');を実行します。

ユーザーごとのphp.iniファイルや その他のApache構成コンテキスト など、上にリストしていない値を設定できる場所があることに注意してください。また、これらの一部は 無効にすることができます です。したがって、.htaccessでオーバーライドを許可するようにサーバーが設定されていない場合、そこに値を設定することもできません。

Wordpressには、PHP構成とさまざまな方法で相互作用する独自の構成変数のいくつかが含まれていることにも注意してください。たとえば、WP_MEMORY_LIMITは、起動時にPHP memory_limit設定をraiseしようとしますが、 チェックし、決して下げないコード 。これには一般的なルールはありません。設定によって異なります。

14
IMSoP

基本的に3つのファイルすべてが考慮されます。

WordPress /あなたのサーバーは次の順番でチェックします:

wp-config.php > .htaccess > php.ini

「上位レベル」(後のチェーン)で何かがあなたの値を制限している場合、前の値は無視されるか上書きされます。チェーンの一部が欠けている場合、例えば.htaccessの値、次に高いものが代わりに使用されます。

あなたの例では、.htaccessmax_upload_sizeを64 MBに制限しますが、あなたのサーバーは最大256 MBで問題なく、WordPressも最初は最大128 MBのファイルサイズを受け入れます。

.htaccess file で別の制限を設定し、これを行うことでphp.iniの値を上書きすることもできます。そのため、これはもはや支配的な値ではなくなります。これは多くのホスティング環境で有効です。このようにして、 または を上げてmax_upload_sizeを下げることができます。

より厳密に設定されたホスティング/サーバーがある場合、 php.iniから設定を上書きするオプションが無効になっている可能性があります。 この場合、max_upload_sizeから.htaccessを上書きしてもうまくいかないので、制限要因。

5
flomei

私はflomeiが答えを編集するべきだと思います。それは正しい答えですが説明が悪いからです。 Php.ini -> .htaccess -> wp-config.phpは実際には各ファイルが読み込まれる順番で、以前に定義された設定がないことを考慮して値を設定します。しかし、以前に定義された設定がある場合、これは新しい設定が低い場合にのみ「上書き」されます。

つまり、64 MBのwp-config.phpと32 MBの.htaccessがある場合は、wp-config.phpはその設定を上書きしません。下限がすでにあり、32 MBになるからです。

しかし、32 MBのwp-config.phpと64 MBの.htaccessがある場合、wp-config.phpは以前の設定を32 MBに下げます。

編集:明確にするために、IMSoPが指摘しているように、wp-config.phpは 'WP_MEMORY_LIMIT'を変更している場合にPHP設定が許すものより制限的なサイズを設定させるだけですそれ以上に行きなさい。つまり、実際には設定の上書きではありません。実際には、実行時のさまざまな時点で別々のチェックが行われます。 phpの設定upload_max_filesizeを彼が想定しているように変更している場合(質問はどの設定を変更しているのかを示していません)、それは効果がありません。

また、あなたはあなたのphp設定でpost_max_sizeupload_max_filesizeより大きくなければならないことを考慮に入れなければならないでしょう

3
bns