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?
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?
Odpowiedzi:
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_filesizeustawienie 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.phpnie 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_LIMITspró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ść, .htaccessna przykład, następna wyższa.
W twoim przykładzie .htaccessograniczyłoby to max_upload_sizedo 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ą .htaccesspliku 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żenie max_upload_sizew ten sposób.
Jeśli masz bardziej skonfigurowany hosting / serwer, możliwe jest, że opcja zastąpienia ustawień z php.inijest wyłączona. W takim przypadku zastąpienie max_upload_sizez .htaccessnie zadziała, więc może to być czynnik ograniczający.
.htaccessjest 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.phpjest 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_filesizejak zakłada (pytanie nie wskazuje, które ustawienia zmieniasz), nie ma to wpływu.
Musisz także wziąć pod uwagę, że post_max_sizemusi być większy niż upload_max_filesizew ustawieniach php
upload_max_filesizenie mogą być zmieniane w czasie wykonywania (prawdopodobnie dlatego, że jest zbyt późno na to, aby mieć jakikolwiek wpływ), więc wp-config.phpnie 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.phpto ini_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.phpwartościami a ustawieniem dowolnych wartości PHP ini_set(). Jak rozumiem, dotyczy wp-config.phpto 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 (takie WP_MEMORY_LIMITjak wspomniane w odpowiedzi). To jest sprawa WordPress. Jednak przy ustawianiu dowolnych wartości konfiguracyjnych PHP za pomocą ini_set()PHP nie ma takich ograniczeń.