Ubuntu est basé sur Debian. Debian et ses dérivés utilisent une manière quelque peu unique de gérer les extensions pour php et apache.
Parmi les fichiers que vous avez répertoriés :
-
/etc/php/7.0/apache2/conf.d/20-xdebug.ini est un lien symbolique vers /etc/php/7.0/mods-available/xdebug.ini
-
/etc/php/7.0/cli/conf.d/20-xdebug.ini est aussi un lien symbolique vers /etc/php/7.0/mods-available/xdebug.ini
- Vous pouvez modifier /etc/php/7.0/mods-available/xdebug.ini directement et les modifications que vous apportez s'appliqueront partout où elles sont activées.
Commandes phpenmod
et phpdismod
sont disponibles pour activer ou désactiver les modules PHP. Ce sont comme a2enmod
pour apache, que vous pouvez lire ici. Par exemple, désactivez XDebug avec sudo phpdismod xdebug
. Rallumez-le avec sudo phpenmod xdebug
. Votre configuration sera préservée lorsque vous l'activerez et la désactiverez car vos modifications sont toujours conservées dans mods-available
, bien que PHP ne regarde pas dans ce répertoire pour la configuration. En fait, lorsque vous "désactivez" le module avec phpdismod
, il supprime simplement le lien symbolique du dossier approprié afin que le module ne soit pas activé dans la configuration php.
Enfin, /etc/php/7.0/apache2/php.ini
est l'emplacement de la configuration à l'échelle du système qui n'est pas un module pouvant être activé ou désactivé.
Ainsi, votre configuration change comme xdebug.remote_port = 9000
devrait aller en /etc/php/7.0/mods-available/xdebug.ini
puisqu'il est lié à XDebug. Le mettre aux deux endroits est une mauvaise idée (à cause de la confusion que cela crée), mais le dernier à charger prévaut. C'est pourquoi de nombreux fichiers du répertoire mods-available ont des numéros dans le nom de fichier - ils se chargeront donc dans le bon ordre.
Utilisez le phpinfo()
fonction pour obtenir plus d'informations sur les valeurs de configuration chargées et les fichiers ini à partir desquels elles ont été chargées. Par exemple :
$ php -r "phpinfo();"
ou
$ php -r "phpinfo();" | grep xdebug
Cela dépend de la façon dont PHP a été compilé. Jetez un œil à la façon dont PHP a été compilé en examinant la liste des .ini
fichiers qu'il charge et d'où ils sont chargés.
À partir de la ligne de commande, saisissez ce qui suit et passez en revue :
$ php -i | grep .ini
Ou, vous pouvez en savoir plus en créant un fichier PHP temporaire et en le visitant dans un navigateur. Assurez-vous simplement de lui donner un nom difficile à trouver et supprimez-le juste après avoir terminé. par exemple, /info-949w30.php
. Pourquoi? Parce que ce rapport peut divulguer les chemins d'accès complets au système de fichiers, les numéros de version et d'autres détails.
<?php phpinfo();
PHP a deux directives qui sont établies lorsqu'il est compilé.
--with-config-file-path=path/to/main.ini
--with-config-file-scan-dir=/scan/this/dir/for/other.ini
fichiers.
Le principal .ini
Le fichier est chargé en premier, puis les fichiers dans le scan-dir sont chargés par ordre alphabétique après cela. C'est pourquoi vous voyez beaucoup de .ini
fichiers à l'aide d'un préfixe numérique. C'est un moyen facile de prendre le contrôle de l'ordre de chargement. Changer le nom du fichier par rapport aux autres dans le répertoire.