Digamos que eu queira alterar o limite máximo de upload para um site Wordpress e forneço os seguintes valores:
wp-config.php: 128MB php.ini: 256MB .htaccess: 64MB
Então, qual deles o Wordpress priorizaria ao processar quando necessário?
Digamos que eu queira alterar o limite máximo de upload para um site Wordpress e forneço os seguintes valores:
wp-config.php: 128MB php.ini: 256MB .htaccess: 64MB
Então, qual deles o Wordpress priorizaria ao processar quando necessário?
Respostas:
Não está claro em sua pergunta o que você está alterando em cada um desses arquivos, mas presumo que, em cada caso, seja a upload_max_filesizeconfiguração do PHP .
Em geral, as configurações serão aplicadas nesta ordem, cada uma substituindo o valor anterior:
ini_set()No entanto, essa configuração é definida como PHP_INI_PERDIR, o que, conforme explicado nesta página, significa que não pode ser definida usando ini_set, portanto, wp-config.phpnão pode ser alterada. Portanto, no exemplo que você fornece na pergunta, o valor de .htaccess é de 64MB.
Você pode verificar isso executando echo ini_get('upload_max_filesize');algum lugar no seu código.
Observe que existem outros locais onde os valores não podem ser listados acima, como arquivos php.ini por usuário e outros contextos de configuração do Apache . Além disso, algumas delas podem ser desativadas ; portanto, se o servidor não estiver configurado para permitir substituições no .htaccess, você também não poderá definir um valor.
Observe também que o Wordpress inclui algumas de suas próprias variáveis de configuração, que interagem de maneiras diferentes com a configuração do PHP. Por exemplo, WP_MEMORY_LIMITtentará aumentar a memory_limitconfiguração do PHP na inicialização, mas possui um código que verifica e nunca a reduz . Não há regra geral para isso, será diferente para configurações diferentes.
Basicamente, todos os três arquivos são levados em consideração.
O WordPress / seu servidor verificará na seguinte ordem:
wp-config.php > .htaccess > php.ini
Se algo em um "nível superior" (mais tarde na cadeia) estiver limitando seu valor, o valor anterior será ignorado ou substituído. Se um pedaço da cadeia estiver faltando, o valor em, .htaccesspor exemplo, o próximo valor mais alto será usado.
No seu exemplo, o .htaccesslimite seria max_upload_sizede 64 MB, embora seu servidor funcione com até 256 MB e o WordPress também aceite primeiro com tamanho de arquivo de até 128 MB.
Você também pode definir um limite diferente por meio do .htaccessarquivo e, ao fazer isso, substitui o valor de php.ini, para que ele não seja mais o valor dominante. Isso funciona em muitos ambientes de hospedagem; portanto, as chances são muito boas de você aumentar ou diminuir max_upload_sizedessa maneira.
Se você tiver um servidor / hospedagem mais estritamente configurado, é possível que a opção de substituir as configurações php.iniesteja desativada. Neste caso, substituindo max_upload_sizede .htaccesstrabalho ganhou't, assim que este poderia ser um fator limitante.
.htaccessestá no meio da lista, por que esse seria o fator limitante?
Acho que o flomei deve editar a resposta, porque essa é a resposta certa, mas a explicação é ruim.
Php.ini -> .htaccess -> wp-config.phpé, na verdade, a ordem em que cada arquivo será lido e definirá os valores levando em consideração que não há configurações definidas anteriormente. Mas no caso de uma configuração definida anteriormente, isso será "substituído" somente se a nova configuração for menor.
Isso significa que, se você tiver o wp-config.php com 64Mb e o .htaccess com 32 MB: o wp-config.php não substituirá essa configuração porque já existe um limite mais baixo e você terá 32Mb.
Mas se você tiver o wp-config.php com 32Mb e o .htaccess com 64 MB, o wp-config.php reduzirá a configuração anterior para 32Mb.
Editar: para esclarecer, como aponta o IMSoP, o wp-config.php permite definir um tamanho mais restritivo do que o permitido pelas configurações do PHP se você estiver alterando 'WP_MEMORY_LIMIT', não permitirá que você vá além disso. Portanto, não é realmente uma substituição de configurações. De fato, há verificações separadas feitas em diferentes pontos no tempo de execução. Se você está alterando a configuração do php upload_max_filesizecomo ele assume (a pergunta não indica quais configurações você está alterando), isso não tem efeito.
Além disso, você deverá levar em consideração que o valor post_max_sizedeve ser maior do que upload_max_filesizenas configurações de php
upload_max_filesizenão pode ser alterado em tempo de execução (presumivelmente porque é tarde demais para que isso tenha algum efeito), portanto wp-config.phpnão pode afetá-lo de uma maneira ou de outra. Um padrão built-in de 2MB também é mencionado, e você pode definitivamente defini-lo maior do que isso.
wp-config.phpfor, ini_set('upload_max_filesize', '32M');ela nunca terá efeito , porque essa configuração não pode ser definida em tempo de execução, como é definidaPHP_INI_PERDIR . (A menos que página de documentação é errado, mas isso parece improvável.)
wp-config.phpvalores específicos e a definição de valores arbitrários do PHP ini_set(). Pelo que entendi, wp-config.phptem a ver principalmente com definir valores de configuração específicos do WordPress e muitos deles são realmente restritos (ou seja, limite superior imposto) pela configuração subjacente de configuração do PHP ( WP_MEMORY_LIMITcomo mencionado na resposta). Isso é coisa do WordPress. No entanto, ao definir valores de configuração arbitrários do PHP usando ini_set()no PHP, não existe essa restrição.