Powiedzmy, że chcę zmienić maksymalny limit wysyłania dla witryny Wordpress i podaję następujące wartości:
wp-config.php: 128 MB php.ini: 256 MB .htaccess: 64 MB
Który więc Wordpress miałby priorytet podczas przetwarzania w razie potrzeby?
Z twojego pytania nie wynika jasno, co zmieniasz w każdym z tych plików, ale zakładam, że w każdym przypadku jest to upload_max_filesize
ustawienie PHP .
Zasadniczo ustawienia będą stosowane w tej kolejności, przy czym każde z nich przekroczy poprzednią wartość:
ini_set()
Jednak to ustawienie jest zdefiniowane jako PHP_INI_PERDIR
, co, jak wyjaśniono na tej stronie, oznacza, że nie można go ustawić za pomocą ini_set
, więc wp-config.php
nie można go zmienić. Tak więc w przykładzie podanym w pytaniu będzie on przyjmował wartość z .htaccess 64 MB.
Możesz to sprawdzić, uruchamiając się echo ini_get('upload_max_filesize');
gdzieś w kodzie.
Zauważ, że istnieją inne miejsca, w których można ustawić wartości, których nie wymieniłem powyżej, takie jak pliki php.ini na użytkownika i inne konteksty konfiguracji Apache . Ponadto niektóre z nich można wyłączyć , więc jeśli twój serwer nie jest skonfigurowany tak, aby zezwalać na over-rides w .htaccess, nie będziesz mógł również ustawić tam wartości.
Zauważ też, że Wordpress zawiera niektóre własne zmienne konfiguracyjne, które na różne sposoby współdziałają z konfiguracją PHP. Na przykład WP_MEMORY_LIMIT
spróbuje podnieśćmemory_limit
ustawienie PHP podczas uruchamiania, ale ma kod, który sprawdza i nigdy go nie obniża . Nie ma ogólnej zasady, będzie różna dla różnych ustawień.
Zasadniczo brane są pod uwagę wszystkie trzy pliki.
WordPress / Twój serwer sprawdzi w następującej kolejności:
wp-config.php > .htaccess > php.ini
Jeśli coś na „wyższym poziomie” (później w łańcuchu) ogranicza twoją wartość, poprzednia wartość zostanie zignorowana lub nadpisana. Jeśli brakuje fragmentu łańcucha, zostanie zastosowana wartość,
.htaccess
na przykład, następna wyższa.W twoim przykładzie
.htaccess
ograniczyłoby tomax_upload_size
do 64 MB, chociaż twój serwer byłby w porządku z maksymalnie 256 MB, a WordPress najpierw zaakceptowałby rozmiar pliku do 128 MB.Możesz również ustawić inny limit za pomocą
.htaccess
pliku i robiąc to, nadpisujesz wartośćphp.ini
, aby nie była już wartością dominującą. Działa to w wielu środowiskach hostingowych, więc są całkiem spore szanse na podniesienie lub obniżeniemax_upload_size
w ten sposób.Jeśli masz bardziej skonfigurowany hosting / serwer, możliwe jest, że opcja zastąpienia ustawień z
php.ini
jest wyłączona. W takim przypadku zastąpieniemax_upload_size
z.htaccess
nie zadziała, więc może to być czynnik ograniczający.źródło
.htaccess
jest na środku listy, dlaczego miałby to być czynnik ograniczający?Myślę, że Flomei powinien edytować odpowiedź, ponieważ jest to właściwa odpowiedź, ale złe wyjaśnienie.
Php.ini -> .htaccess -> wp-config.php
jest faktycznie kolejnością, w jakiej każdy plik zostanie odczytany i ustawi wartości, biorąc pod uwagę, że wcześniej nie zdefiniowano żadnego ustawienia. Ale w przypadku wcześniej zdefiniowanego ustawienia, zostanie ono „zastąpione” tylko wtedy, gdy nowe ustawienie będzie niższe.Oznacza to, że jeśli masz wp-config.php z 64 MB i .htaccess z 32 MB: wp-config.php nie zastąpi tego ustawienia, ponieważ istnieje już dolny limit i skończysz z 32 MB.
Ale jeśli masz wp-config.php z 32Mb i .htaccess z 64 MB, wp-config.php obniży poprzednie ustawienie do 32Mb.
Edycja: Aby wyjaśnić, jak wskazuje IMSoP, wp-config.php pozwala tylko ustawić rozmiar, który jest bardziej restrykcyjny niż pozwala na to ustawienie PHP, jeśli zmieniasz „WP_MEMORY_LIMIT”, to nie pozwala ci wyjść poza to. Więc to nie jest tak naprawdę przesłonięcie ustawień. W rzeczywistości istnieją oddzielne kontrole wykonywane w różnych punktach w czasie wykonywania. Jeśli zmieniasz ustawienia php,
upload_max_filesize
jak zakłada (pytanie nie wskazuje, które ustawienia zmieniasz), nie ma to wpływu.Musisz także wziąć pod uwagę, że
post_max_size
musi być większy niżupload_max_filesize
w ustawieniach phpźródło
upload_max_filesize
nie mogą być zmieniane w czasie wykonywania (prawdopodobnie dlatego, że jest zbyt późno na to, aby mieć jakikolwiek wpływ), więcwp-config.php
nie może wpływać na to w jedną lub drugą. Wspomniano również o domyślnej wartości 2 MB i na pewno można ustawić wyższą wartość.wp-config.php
toini_set('upload_max_filesize', '32M');
będzie to miało żadnego wpływu, kiedykolwiek , ponieważ to ustawienie nie może być ustawiony w czasie wykonywania , jak to jest zdefiniowane jakoPHP_INI_PERDIR
. (Chyba że ta strona dokumentacji jest nieprawidłowa, ale wydaje się to mało prawdopodobne.)wp-config.php
wartościami a ustawieniem dowolnych wartości PHPini_set()
. Jak rozumiem, dotyczywp-config.php
to przede wszystkim ustawiania specyficznych dla WordPress wartości konfiguracyjnych i wiele z nich jest rzeczywiście ograniczonych (tj. Narzuconych górnych limitów) przez podstawowe ustawienia konfiguracyjne PHP (takieWP_MEMORY_LIMIT
jak wspomniane w odpowiedzi). To jest sprawa WordPress. Jednak przy ustawianiu dowolnych wartości konfiguracyjnych PHP za pomocąini_set()
PHP nie ma takich ograniczeń.