Lorsque j'affiche phpinfo();
je vois deux colonnes : valeur locale
et valeur principale
. Quand le serveur web choisira-t-il valeur locale
et quand choisira-t-il valeur principale
?
Réponses
Trop de publicités?master
est soit la valeur compilée dans PHP, soit définie via une directive principale php.ini
. C'est-à-dire, la valeur qui est en vigueur lorsque PHP démarre, avant d'exécuter votre code.
local
est la valeur qui est actuellement en vigueur au moment où vous appelez phpinfo()
. Cette valeur locale est le résultat final des remplacements qui ont eu lieu via des appels à ini_set()
, des directives php_value
dans httpd.conf/.htaccess, etc.
Par exemple,
php.ini: foo=bar
httpd.conf: php_value foo baz
.htaccess: php_value foo qux
ini_set: ini_set('foo', 'kittens');
.user.ini foo=bar # ce fichier fonctionne de manière conditionnelle voir https://stackoverflow.com/a/32193087/1818723
Étant donné cela, la valeur master
est qux
, et la valeur local
est kittens
.
"Valeur maître" (de php.ini) peut être remplacée par "Valeur locale" dans httpd.conf, .htaccess ou autre configuration Apache avec la directive php_value.
La première est la valeur locale et la seconde est la valeur globale. La valeur locale remplace la valeur globale et est définie dans PHP, HTACCESS, etc., tandis que la valeur globale est définie dans php.ini. Pour répondre à votre question, la première valeur est utilisée.
Le site hébergé vérifiera d'abord les valeurs locales dans .htaccess
ou .user.ini
. (Ces fichiers se trouvent dans le dossier de votre site web local et peuvent également être appelés fichiers de configuration de niveau local.)
Les valeurs locales remplacent les valeurs maîtresses, donc php
vérifiera d'abord les valeurs locales.
La valeur maîtresse est définie dans php.ini
(fichier de configuration principal de PHP). Exécutez les commandes suivantes dans le terminal pour trouver le chemin correct:
php -i | grep 'Configuration File'
ou
php -i | grep php.ini
Donc même si nous définissons des valeurs maîtresses dans php.ini
, nous devons également vérifier les valeurs locales dans .htaccess
ou .user.ini
.
Voici une explication de quand .htaccess
vs .user.ini
fonctionne https://stackoverflow.com/a/32193087/1818723
Local est en ligne ou à l'échelle de l'utilisateur tandis que master est une option de configuration à l'échelle du système.
ce serait plus facile et plus rapide à comprendre si cela était nommé "global" au lieu de master
puisque les fichiers cachés .user.ini
et .htaccess
sont propres au site, ils contiennent des valeurs locales ainsi que la fonction ini_set
pour définir des options dans le fichier .php
les fichiers PHPRC
et PHP_INI_SCAN_DIR
contiendraient les valeurs maîtresses (globales, à l'échelle du système)
PHPRC
: /etc/php.ini
PHP_INI_SCAN_DIR
: /etc/php/*.ini