Допустим, я хочу изменить максимальный лимит загрузки для веб-сайта Wordpress, и я даю следующие значения:
wp-config.php: 128 МБ php.ini: 256 МБ .htaccess: 64 МБ
Итак, какой из них будет приоритет Wordpress при обработке по мере необходимости?
Это не ясно из вашего вопроса , что вы меняете в каждом из этих файлов, но я полагаю , в каждом случае это настройка PHP .upload_max_filesize
В общем, настройки будут применяться в следующем порядке, каждый переопределяя предыдущее значение:
ini_set()
Однако этот параметр определяется как PHP_INI_PERDIR
, что, как объясняется на этой странице, означает, что его нельзя установить с помощью ini_set
, поэтому он wp-config.php
не может изменить его. Таким образом, в примере, приведенном в вопросе, он будет принимать значение из .htaccess 64 МБ.
Вы можете проверить это, запустив echo ini_get('upload_max_filesize');
где-нибудь в своем коде.
Обратите внимание, что могут быть установлены другие значения мест, которые я не перечислил выше, такие как файлы php.ini для каждого пользователя и другие контексты конфигурации Apache . Кроме того, некоторые из них могут быть отключены , поэтому, если на вашем сервере не разрешено переопределение в .htaccess, вы также не сможете установить значение там.
Также обратите внимание, что Wordpress включает в себя некоторые собственные переменные конфигурации, которые по-разному взаимодействуют с конфигурацией PHP. Например, WP_MEMORY_LIMIT
попытается повыситьmemory_limit
настройку PHP при запуске, но имеет код, который проверяет и никогда не понижает его . Там нет общего правила, это будет отличаться для разных настроек.
В основном все три файла приняты во внимание.
WordPress / ваш сервер проверит в следующем порядке:
wp-config.php > .htaccess > php.ini
Если что-то на «более высоком уровне» (позднее в цепочке) ограничивает ваше значение, первое значение будет игнорироваться или перезаписываться. Если часть цепочки отсутствует,
.htaccess
вместо нее будет использоваться значение, например, следующего за более высоким.В вашем примере
.htaccess
будет ограниченоmax_upload_size
до 64 МБ, хотя ваш сервер будет в порядке с 256 МБ и WordPress также будет принимать до 128 МБ в размере файла в первую очередь.Вы также можете установить другой лимит через
.htaccess
файл и, делая это, вы перезаписываете значениеphp.ini
, чтобы оно больше не было доминирующим. Это работает во многих средах хостинга, так что, скорее всего, вы можете увеличить или уменьшитьmax_upload_size
таким образом.Если у вас более строго настроенный хостинг / сервер, возможно, опция отмены настроек
php.ini
отключена. В этом случае, перекрываяmax_upload_size
от.htaccess
won't работы, так что это может быть ограничивающим фактором.источник
.htaccess
находится в середине списка, почему этот фактор является ограничивающим фактором?Я думаю, что flomei должен отредактировать ответ, потому что это правильный ответ, но плохое объяснение.
Php.ini -> .htaccess -> wp-config.php
на самом деле порядок, в котором каждый файл будет прочитан и будет устанавливать значения, принимая во внимание, что ранее не было задано никаких настроек. Но в случае, если есть ранее определенная настройка, она будет «перезаписана», только если новая настройка ниже.Это означает, что если у вас есть wp-config.php с 64 МБ и .htaccess с 32 МБ: wp-config.php не будет переопределять этот параметр, потому что уже есть нижний предел, и вы получите 32 МБ.
Но если у вас есть wp-config.php с 32 МБ и .htaccess с 64 МБ, wp-config.php снизит предыдущий параметр до 32 МБ.
Изменить: чтобы уточнить, как указывает IMSoP, wp-config.php просто позволяет вам установить размер, который является более ограничительным, чем тот, который позволяют настройки PHP, если вы изменяете «WP_MEMORY_LIMIT», он не позволяет вам выйти за пределы этого. Так что на самом деле это не переопределение настроек. На самом деле, во время выполнения выполняются отдельные проверки в разных точках. Если вы меняете настройку php так,
upload_max_filesize
как он предполагает (вопрос не указывает, какие настройки вы меняете), это не имеет никакого эффекта.Кроме того, вы должны принять во внимание, что значение
post_max_size
должно быть больше, чемupload_max_filesize
в ваших настройках PHPисточник
upload_max_filesize
не может быть изменен во время выполнения (предположительно потому , что это слишком поздно для того , чтобы иметь никакого эффекта) , так чтоwp-config.php
не может повлиять на это, так или другой. Также упоминается встроенное значение по умолчанию 2 МБ, и вы можете определенно установить его выше.wp-config.php
этоini_set('upload_max_filesize', '32M');
не будет иметь никакого эффекта, когда - либо , потому что установка не может быть установлена во время выполнения , как она определяется какPHP_INI_PERDIR
. (Если эта страница документации не является неправильной, но это кажется маловероятным.)wp-config.php
значениями и установкой произвольных значений PHP с помощьюini_set()
. Насколько я понимаю,wp-config.php
это в первую очередь связано с настройкой конкретных конфигурационных значений WordPress, и многие из них действительно ограничены (т. Е. Введены верхние пределы) базовыми настройками конфигурации PHP (такими,WP_MEMORY_LIMIT
как упомянутые в ответе). Это вещь WordPress. Однако при установке произвольных значений конфигурации PHP с использованиемini_set()
в PHP такого ограничения нет.