Скажімо, я хочу змінити максимальний розмір завантаження для веб-сайту Wordpress і даю наступні значення:
wp-config.php: 128MB php.ini: 256MB .htaccess: 64MB
Отже, який би Wordpress надавав пріоритет під час обробки при потребі?
Скажімо, я хочу змінити максимальний розмір завантаження для веб-сайту Wordpress і даю наступні значення:
wp-config.php: 128MB php.ini: 256MB .htaccess: 64MB
Отже, який би Wordpress надавав пріоритет під час обробки при потребі?
Відповіді:
Це не ясно з вашого запитання , що ви міняєте в кожному з цих файлів, але я вважаю , в кожному разі це настройка PHP .upload_max_filesize
Загалом, налаштування будуть застосовані в такому порядку, кожне перевищення попереднього значення:
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 при запуску, але має код, який перевіряє і ніколи не знижує його . Тут немає загального правила, для різних налаштувань воно буде різним.
В основному всі три файли враховані.
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
роботи не вийде, тому це може бути обмежуючим фактором.
.htaccess
стоїть у середині списку, то чому саме це буде обмежуючим фактором?
Я думаю, що 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
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 такого обмеження не існує.