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, ¿cuál priorizaría Wordpress al procesar según sea necesario?
No está claro por su pregunta qué está cambiando en cada uno de estos archivos, pero supongo que en cada caso es la upload_max_filesize
configuración de PHP .
En general, la configuración se aplicará en este orden, cada uno anulando el valor anterior:
ini_set()
Sin embargo, esta configuración se define como PHP_INI_PERDIR
, lo que, como se explica en esta página, significa que no se puede configurar usando ini_set
, por lo wp-config.php
que no se puede cambiar. Entonces, en el ejemplo que da en la pregunta, tomará el valor de .htaccess de 64MB.
Puede verificar esto ejecutando echo ini_get('upload_max_filesize');
en algún lugar de su código.
Tenga en cuenta que se pueden establecer otros valores de lugares que no he enumerado anteriormente, como archivos php.ini por usuario y otros contextos de configuración de Apache . Además, algunos de estos se pueden deshabilitar , por lo que si su servidor no está configurado para permitir anulaciones 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á aumentar la memory_limit
configuración de PHP en el inicio, pero tiene un código que verifica y nunca la baja . No hay una regla general para esto, será diferente para diferentes configuraciones.
Básicamente, los tres archivos se tienen en cuenta.
WordPress / su servidor verificará en el siguiente orden:
wp-config.php > .htaccess > php.ini
Si algo en un "nivel superior" (más adelante en la cadena) está limitando su valor, el valor anterior se ignorará o se sobrescribirá. Si falta una parte de la cadena, el valor en,
.htaccess
por ejemplo, se utilizará el siguiente más alto.En su ejemplo
.htaccess
, limitaríamax_upload_size
a 64 MB, aunque su servidor estaría bien con hasta 256 MB y WordPress también aceptaría primero hasta 128 MB en tamaño de archivo.También puede establecer un límite diferente a través del
.htaccess
archivo y al hacerlo, sobrescribe el valorphp.ini
, de modo que ya no sea el valor dominante. Esto funciona en muchos entornos de alojamiento, por lo que hay muchas posibilidades de que pueda subir o bajarmax_upload_size
de esta manera.Si tiene un servidor / servidor más estrictamente configurado, es posible que la opción de anular la configuración
php.ini
esté deshabilitada. En este caso, anularmax_upload_size
desde.htaccess
no funcionará, por lo que esto podría ser un factor limitante.fuente
.htaccess
está en el medio de la lista, ¿por qué ese sería el factor limitante?Creo que flomei debería editar la respuesta, porque esa es la respuesta correcta pero 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 hay una configuración definida previamente. Pero en el caso de que haya una configuración previamente definida, 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 hay 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 simplemente le permite establecer un tamaño que es más restrictivo que lo que permite la configuración de PHP si está cambiando 'WP_MEMORY_LIMIT', no le permite ir más allá de eso. Entonces, en realidad no es una anulación de la configuración. De hecho, hay controles separados realizados en diferentes puntos en tiempo de ejecución. Si está cambiando la configuración de php
upload_max_filesize
como él supone (la pregunta no indica qué configuración está cambiando), eso no tiene ningún efecto.Además, deberá tener en cuenta que
post_max_size
debe ser mayor queupload_max_filesize
en su configuración de phpfuente
upload_max_filesize
no se puede cambiar en tiempo de ejecución (presumiblemente porque es demasiado tarde para que tenga algún efecto), porwp-config.php
lo que no puede afectarlo de una manera u otra. También se menciona un valor predeterminado incorporado de 2 MB, y definitivamente puede establecerlo más alto que eso.wp-config.php
esini_set('upload_max_filesize', '32M');
que no tendrá ningún efecto , porque esa configuración no se puede establecer en tiempo de ejecución como se define comoPHP_INI_PERDIR
. (A menos que la página de documentación sea incorrecta, pero parece poco probable).wp-config.php
valores específicos y establecer valores arbitrarios de PHP conini_set()
. Según tengo entendido,wp-config.php
tiene que ver principalmente con la configuración de valores de configuración específicos de WordPress y muchos de estos están restringidos (es decir, límite superior impuesto) por la configuración de configuración PHP subyacente (WP_MEMORY_LIMIT
como se menciona en la respuesta). Esto es una cosa de WordPress. Sin embargo, cuando se configuran valores arbitrarios de configuración de PHP utilizandoini_set()
PHP, no existe tal restricción.