Якому з них Wordpress надає пріоритет, коли мова йде про php.ini, wp-config та .htaccess?


10

Скажімо, я хочу змінити максимальний розмір завантаження для веб-сайту Wordpress і даю наступні значення:

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

Отже, який би Wordpress надавав пріоритет під час обробки при потребі?

Відповіді:


13

Це не ясно з вашого запитання , що ви міняєте в кожному з цих файлів, але я вважаю , в кожному разі це настройка PHP .upload_max_filesize

Загалом, налаштування будуть застосовані в такому порядку, кожне перевищення попереднього значення:

  1. php.ini
  2. Директиви Apache в .htaccess
  3. дзвінки на ini_set()

Однак це налаштування визначено як PHP_INI_PERDIR, що, як пояснено на цій сторінці, означає, що його неможливо встановити за допомогою ini_set, тому wp-config.phpне можна змінити його. Отже, у прикладі, який ви наводите у запитанні, воно прийме значення з .htaccess 64MB.

Ви можете перевірити це, запустивши echo ini_get('upload_max_filesize');десь у своєму коді.

Зауважте, що можуть бути встановлені інші значення місць, які я не перераховував вище, наприклад файли php.ini на користувача та інші контексти конфігурації Apache . Крім того, деякі з них можуть бути відключені , тому якщо ваш сервер не встановлений, щоб дозволяти перевитрати в .htaccess, ви також не зможете встановити значення.

Також зауважте, що Wordpress включає деякі власні змінні конфігурації, які взаємодіють по-різному з конфігурацією PHP. Наприклад, WP_MEMORY_LIMITспробує піднятиmemory_limit налаштування PHP при запуску, але має код, який перевіряє і ніколи не знижує його . Тут немає загального правила, для різних налаштувань воно буде різним.


php.ini - це завжди перший вибір.
WpMania.Net

5

В основному всі три файли враховані.

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роботи не вийде, тому це може бути обмежуючим фактором.


8
Як це "не так, як це працює", коли ви даєте список пріоритетів, так, як запитання задається? І якщо .htaccessстоїть у середині списку, то чому саме це буде обмежуючим фактором?
IMSoP

Я думаю, що мій вираз був незрозумілим. Я зрозумів його питання як "якщо я встановлю більш високе значення в wp-config, чи буде це" домінувати "над іншими?" і що це не так, як це працює. ;-) @bns краще пояснив це.
flomei

Правильно, я бачу, що ти маєш на увазі зараз. Однак, коли я коментував відповідь bns, я не можу знайти жодної документації, яка б підтверджувала твердження про те, що ви не можете змінити значення з більшим значенням. Значення wp-config.php завжди буде ігноруватися, як було пояснено у моїй відповіді, але я впевнений, що більш високе значення в .htaccess буде просто замінити нижнє в php.ini
IMSoP

Ви частково праві, але переважаючі значення php.ini з .htaccess можна деактивувати, дивіться мою оновлену відповідь.
flomei

Оновлення все ще означає, що ви можете встановити лише нижче значення через .htaccess. Я не знаю, що ви не могли також встановити там більш високе значення. Те, що механізм можна відключити, є хорошим моментом, і я зафіксував свою відповідь, але якщо припустити, що будь-які параметри PHP дозволені в .htaccess, то значення в .htaccess абсолютно "домінуватиме" над значенням у php.ini для тієї ж настройки.
IMSoP

3

Я думаю, що flomei повинна відредагувати відповідь, тому що це правильна відповідь, але погані пояснення. Php.ini -> .htaccess -> wp-config.phpнасправді це порядок, який буде прочитаний кожним файлом, і встановить значення, враховуючи те, що раніше не визначені параметри. Але якщо є раніше визначена настройка, це буде "переоцінено", лише якщо нова настройка буде нижчою.

Це означає, що якщо у вас wp-config.php з 64Mb та .htaccess з 32 Мб: wp-config.php не зможе змінити це налаштування, тому що вже є нижня межа, і ви отримаєте 32Mb.

Але якщо у вас 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


2
Чи можете ви зв’язати будь-яку документацію для цього "лише завищення, якщо нове значення нижче", оскільки це, безумовно, не відповідає жодному іншому параметру PHP, який я бачив. Він також не згадується на цій сторінці посібника . Що це було сказано, як я доводжу в моїй обороні, то , що upload_max_filesizeне може бути змінений під час виконання (імовірно тому , що це занадто пізно для того , щоб мати ніякого ефекту) , так що wp-config.phpне може вплинути на це, так чи іншої. Згадується також вбудований за замовчуванням 2 Мб, і ви можете точно встановити його вище.
IMSoP

Це в основному те, що мені розширила команда підтримки мого провайдера хостингу, коли у мене була та сама проблема, я шукатиму електронну пошту та оновлюватиму, якщо знайду її. Я не дуже впевнений, чи дійсно всередині сервера ви переосмислюєте це значення, або це просто те, що перевірки проводяться в час виконання в різних місцях, таким чином, поведінка виглядає таким чином.
bns

1
Просто ще раз, якщо рядок, який ви додаєте до wp-config.phpцього, ini_set('upload_max_filesize', '32M');він не матиме жодного ефекту , оскільки це налаштування не може бути встановлено під час виконання так, як це визначено якPHP_INI_PERDIR . (Якщо ця сторінка документації не є помилковою, але це здається малоймовірним.)
IMSoP

Ні, ви праві. Це насправді не переопрацювання налаштувань. Це просто ще одне окреме обмеження, я поновлюся постійно, щоб уникнути плутанини.
бнс

1
@IMSoP / bns - Я думаю, що, можливо, була певна плутанина між конкретними wp-config.phpзначеннями та встановленням довільних значень PHP за допомогою ini_set(). Як я розумію, wp-config.phpце в першу чергу пов'язане з встановленням конкретних значень конфігурації для WordPress, і багато з них дійсно обмежені (тобто, накладеною верхньою межею) базовим параметром конфігурації PHP (наприклад WP_MEMORY_LIMIT, згаданим у відповіді). Це справа WordPress. Однак при встановленні довільних значень конфігурації PHP за допомогою ini_set()PHP такого обмеження не існує.
MrWhite
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.