Lequel des priorités de Wordpress en matière de php.ini, wp-config et .htaccess?

11

Supposons que je souhaite modifier la limite de chargement maximale pour un site Web Wordpress et que je donne les valeurs suivantes:

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

Alors, à qui Wordpress donnerait la priorité lors du traitement en cas de besoin?

    
posée imranhunzai 13.02.2017 - 11:32

3 réponses

14

Votre question ne dit pas clairement ce que vous modifiez dans chacun de ces fichiers, mais je suppose que dans chaque cas, il s'agit de le paramètre upload_max_filesize PHP .

En général, les paramètres seront appliqués dans cet ordre, chacun surpassant la valeur précédente:

  1. php.ini
  2. Directives Apache dans .htaccess
  3. appelle vers ini_set()

Toutefois, ce paramètre est défini comme PHP_INI_PERDIR , ce qui comme expliqué sur cette page . signifie qu'il ne peut pas être défini à l'aide de ini_set , de sorte que wp-config.php ne peut pas le changer. Ainsi, dans l'exemple que vous donnez dans la question, il prendra la valeur de .htaccess de 64 Mo.

Vous pouvez le vérifier en exécutant echo ini_get('upload_max_filesize'); quelque part dans votre code.

Notez qu'il existe d'autres valeurs de lieu que je n'ai pas répertoriées ci-dessus, telles que les fichiers php.ini par utilisateur et autres contextes de configuration Apache . En outre, certaines de ces peuvent être désactivées , donc si votre serveur n'est pas configuré pour autoriser les contournements dans .htaccess, vous ne pourrez pas définir de valeur dans ce cas non plus.

Notez également que Wordpress inclut certaines de ses propres variables de configuration, qui interagissent de différentes manières avec la configuration PHP. Par exemple, WP_MEMORY_LIMIT tentera de lever le paramètre PHP memory_limit au démarrage, mais a code qui le vérifie et ne le réduit jamais . Il n'y a pas de règle générale, ce sera différent pour différents paramètres.

    
réponse donnée IMSoP 13.02.2017 - 16:19
5

Fondamentalement, les trois fichiers sont pris en compte.

WordPress / votre serveur vérifiera dans l'ordre suivant:

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

Si quelque chose d'un "niveau supérieur" (plus tard dans la chaîne) limite votre valeur, l'ancienne valeur sera ignorée ou écrasée. Si un élément de la chaîne est manquant, la valeur dans .htaccess par exemple, la valeur immédiatement supérieure sera utilisée.

Dans votre exemple, .htaccess limiterait le nombre de max_upload_size à 64 Mo. Votre serveur accepterait jusqu'à 256 Mo et WordPress accepterait également jusqu'à 128 Mo de taille de fichier.

Vous pouvez également définir une limite différente via le fichier .htaccess et ainsi remplacer la valeur de php.ini , de sorte que ce n'est plus la valeur dominante. Cela fonctionne dans beaucoup d'environnements d'hébergement. Vous avez donc de bonnes chances que vous augmentiez ou le max_upload_size de cette manière.

Si vous avez un hébergement / serveur configuré de manière plus stricte, il est possible que l'option permettant de remplacer les paramètres de php.ini est désactivée. Dans ce cas, remplacer max_upload_size de .htaccess ne fonctionnera pas, donc cela pourrait être une limitation facteur.

    
réponse donnée flomei 13.02.2017 - 12:10
3

Je pense que flomei devrait modifier la réponse, car c’est la bonne réponse mais une mauvaise explication. Php.ini -> .htaccess -> wp-config.php est en réalité l'ordre dans lequel chaque fichier sera lu et définira les valeurs en tenant compte du fait qu'il n'y a pas de paramètre défini auparavant. Toutefois, dans le cas où un paramètre a déjà été défini, celui-ci ne sera "écrasé" que si le nouveau paramètre est inférieur.

Cela signifie que si vous avez wp-config.php avec 64 Mo et .htaccess avec 32 Mo: wp-config.php ne remplacera pas ce paramètre car il existe déjà une limite inférieure et vous obtiendrez 32 Mo.

Mais si vous avez wp-config.php avec 32 Mo et .htaccess avec 64 Mo, wp-config.php abaissera le paramètre précédent à 32 Mo.

Éditer: pour préciser, comme le souligne IMSoP, wp-config.php vous permet simplement de définir une taille plus restrictive que celle permise par les paramètres PHP si vous modifiez 'WP_MEMORY_LIMIT', mais ne vous permet pas d'aller au-delà. . Donc, ce n'est pas réellement une substitution de paramètres. En fait, des contrôles séparés sont effectués à différents moments de l'exécution. Si vous modifiez le paramètre php upload_max_filesize comme il le suppose (la question n'indique pas les paramètres que vous modifiez), cela n'a aucun effet.

De plus, vous devrez tenir compte du fait que post_max_size doit être supérieur à upload_max_filesize dans vos paramètres php

    
réponse donnée bns 13.02.2017 - 21:33

Lire d'autres questions sur les étiquettes