Qual deles o Wordpress prioriza quando se trata de php.ini, wp-config e .htaccess?

11

Digamos que eu queira alterar o limite máximo de upload para um site do Wordpress e forneço os seguintes valores:

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

Então, qual Wordpress deveria priorizar durante o processamento sob demanda?

    
por imranhunzai 13.02.2017 / 11:32

3 respostas

14

Não está claro a partir de sua pergunta o que você está alterando em cada um desses arquivos, mas presumo que em cada caso seja a configuração upload_max_filesize do PHP .

Em geral, as configurações serão aplicadas nesta ordem, cada uma sobrepondo o valor anterior:

  1. php.ini
  2. Diretivas do Apache em .htaccess
  3. chamadas para ini_set()

No entanto, essa configuração é definida como PHP_INI_PERDIR , que conforme explicado nesta página significa que não pode ser definido usando ini_set , portanto, o wp-config.php não pode alterá-lo. Então, no exemplo que você dá na pergunta, ele pegará o valor de .htaccess de 64MB.

Você pode verificar isso executando echo ini_get('upload_max_filesize'); em algum lugar no seu código.

Note que há outros lugares que podem ser definidos valores que eu não listei acima, como arquivos php.ini por usuário, e outros contextos de configuração do Apache . Além disso, alguns desses podem ser desativados , portanto, se o seu servidor não estiver configurado para permitir over-rides no .htaccess, você não poderá definir um valor lá.

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_LIMIT tentará aumentar a configuração memory_limit do PHP na inicialização, mas tem código que verifica e nunca diminui . Não há regra geral para isso, será diferente para diferentes configurações.

    
por IMSoP 13.02.2017 / 16:19
5

Basicamente, todos os três arquivos são levados em consideração.

WordPress / seu servidor fará o check-in na seguinte ordem:

wp-config.php > .htaccess > php.ini

Se algo em um "nível superior" (mais adiante na cadeia) estiver limitando seu valor, o primeiro valor será ignorado ou sobrescrito. Se uma parte da cadeia estiver faltando, o valor em .htaccess , por exemplo, a próxima maior será usado no lugar.

No seu exemplo, o .htaccess limitaria o max_upload_size a 64 MB, embora o servidor ficasse bem com até 256 MB e o WordPress também aceitaria até 128 MB no tamanho do arquivo primeiro.

Você também pode definir um limite diferente por meio do arquivo .htaccess e, ao fazer isso, sobrescreve o valor de php.ini , de modo que não seja mais o valor dominante. Isso funciona em muitos ambientes de hospedagem, então é bem provável que você possa aumentar ou diminuir o max_upload_size desta maneira.

Se você tiver uma hospedagem / servidor mais rigorosamente configurada, é possível que a opção de sobrescrever as configurações de php.ini está desativada. Nesse caso, substituir max_upload_size de .htaccess não funcionará, então isso pode ser um limite fator.

    
por flomei 13.02.2017 / 12:10
3

Acho que o flomei deve editar a resposta, porque essa é a resposta certa, mas é uma 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ção definida anteriormente. Mas, no caso de haver uma configuração definida anteriormente, ela será "cancelada" apenas 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 irá substituir essa configuração porque já existe um limite inferior e você terminará com 32Mb. / p>

Mas se você tiver o wp-config.php com 32Mb e o .htaccess com 64MB, o wp-config.php reduzirá a configuração anterior para 32Mb.

Edit: Para esclarecer, como o IMSoP aponta, o wp-config.php apenas permite que você defina um tamanho mais restritivo do que o permitido pelas configurações do PHP se você está alterando 'WP_MEMORY_LIMIT', ele não permite ir além disso . Portanto, não é realmente uma substituição de configurações. Na verdade, existem verificações separadas feitas em diferentes pontos no tempo de execução. Se você está alterando a configuração do php upload_max_filesize como ele assume (a pergunta não indica quais configurações você está mudando), isso não tem efeito.

Além disso, você terá que levar em conta que post_max_size deve ser maior que upload_max_filesize nas configurações do seu php

    
por bns 13.02.2017 / 21:33