¿Cuál es la prioridad de Wordpress cuando se trata de php.ini, wp-config y .htaccess?

11

Digamos que quiero cambiar el límite máximo de carga para un sitio web de Wordpress y le doy los siguientes valores:

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

Entonces, ¿a cuál le daría prioridad Wordpress mientras procesa según sea necesario?

    
pregunta imranhunzai 13.02.2017 - 11:32

3 respuestas

14

De su pregunta no queda claro qué está cambiando en cada uno de estos archivos, pero supongo que en cada caso es la configuración upload_max_filesize PHP .

En general, las configuraciones se aplicarán en este orden, cada una sobrepasando el valor anterior:

  1. php.ini
  2. Directivas de Apache en .htaccess
  3. llamadas a ini_set()

Sin embargo, esta configuración se define como PHP_INI_PERDIR , que como se explica en esta página significa que no se puede configurar utilizando ini_set , por lo que wp-config.php no puede cambiarlo. Entonces, en el ejemplo que proporcione en la pregunta, tomará el valor de .htaccess de 64MB.

Puedes verificar esto ejecutando echo ini_get('upload_max_filesize'); en algún lugar de tu código.

Tenga en cuenta que hay otros lugares donde se pueden establecer valores que no he enumerado anteriormente, como los archivos php.ini por usuario, y otros contextos de configuración de Apache . Además, algunos de estos se pueden desactivar , por lo tanto, si su servidor no está configurado para permitir over-rides en .htaccess, tampoco podrá establecer un valor allí.

También tenga en cuenta que Wordpress incluye algunas de sus propias variables de configuración, que interactúan de diferentes maneras con la configuración de PHP. Por ejemplo, WP_MEMORY_LIMIT intentará elevar la configuración de PHP memory_limit al inicio, pero tiene código que comprueba y nunca lo baja . No hay una regla general para esto, será diferente para diferentes configuraciones.

    
respondido por el IMSoP 13.02.2017 - 16:19
5

Básicamente, los tres archivos se tienen en cuenta.

WordPress / su servidor comprobará en el siguiente orden:

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

Si algo en un "nivel superior" (más adelante en la cadena) limita su valor, el valor anterior se ignorará o se sobrescribirá. Si falta una parte de la cadena, por ejemplo, el valor en .htaccess , se usará el siguiente más alto.

En su ejemplo, .htaccess limitaría el max_upload_size a 64 MB, aunque su servidor estaría bien con hasta 256 MB y WordPress también aceptaría hasta 128 MB de tamaño de archivo primero.

También puede establecer un límite diferente a través del archivo .htaccess y al hacer esto, sobrescribe el valor de php.ini , por lo que ya no es el valor dominante. Esto funciona en muchos entornos de alojamiento, por lo que es muy probable que pueda aumentar o para reducir el max_upload_size de esta manera.

Si tiene un servidor / servidor con una configuración más estricta, es posible que la opción de anular la configuración de php.ini está deshabilitada. En este caso, la anulación de max_upload_size de .htaccess no funcionará, por lo que esto podría ser una limitación factor.

    
respondido por el flomei 13.02.2017 - 12:10
3

Creo que flomei debería editar la respuesta, porque esa es la respuesta correcta pero es una mala explicación. Php.ini -> .htaccess -> wp-config.php es en realidad el orden en que se leerá cada archivo y establecerá los valores teniendo en cuenta que no se ha definido previamente la configuración. Pero en el caso de que haya una configuración definida previamente, esto se "anulará" solo si la nueva configuración es más baja.

Eso significa que, si tiene wp-config.php con 64Mb y .htaccess con 32 MB: wp-config.php no anulará esa configuración porque ya existe un límite inferior y terminará con 32Mb.

Pero si tiene wp-config.php con 32Mb y .htaccess con 64 MB, wp-config.php reducirá la configuración anterior a 32Mb.

Editar: para aclarar, como señala IMSoP, wp-config.php solo te permite establecer un tamaño que sea más restrictivo que lo que permite la configuración de PHP si estás cambiando 'WP_MEMORY_LIMIT', no te deja ir más allá de eso . Así que en realidad no es una anulación de configuración. De hecho, hay controles separados realizados en diferentes puntos en el tiempo de ejecución. Si está cambiando la configuración de php upload_max_filesize como él asume (la pregunta no indica qué configuraciones está cambiando), eso no tiene ningún efecto.

Además, deberás tener en cuenta que el post_max_size debe ser mayor que upload_max_filesize en la configuración de php

    
respondido por el bns 13.02.2017 - 21:33

Lea otras preguntas en las etiquetas