Допустим, я хочу изменить максимальный лимит загрузки для веб-сайта Wordpress, и я даю следующие значения:
wp-config.php: 128 МБ php.ini: 256 МБ .htaccess: 64 МБ
Итак, какой из них будет приоритет Wordpress при обработке по мере необходимости?
Допустим, я хочу изменить максимальный лимит загрузки для веб-сайта 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от .htaccesswon'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 такого ограничения нет.