web-dev-qa-db-fra.com

Manière correcte de modifier php.ini pour Apache et / ou CLI

Je souhaite modifier et ajouter certaines directives PHP, certaines pour Apache, d'autres pour la CLI et d'autres pour les deux. Par exemple, je souhaite définir le fuseau horaire par défaut pour tous les contextes de serveur. Il existe différentes manières de procéder, mais je ne sais pas quelle est la meilleure approche.

Je peux directement éditer les fichiers maîtres php.ini, qui sont ici /etc/php/7.0/Apache2/php.ini et ici /etc/php/7.0/cli/php.ini, mais je ne sais pas si ce fichier sera écrasé lors de la mise à niveau. De plus, pour les paramètres partagés, tels que le fuseau horaire, je dois me rappeler d’éditer deux fichiers et de garder ces modifications synchronisées.

Je peux utiliser les directives php_admin_value, php_admin_flag, php_value et php_flag d'Apache. L'avantage ici est que les paramètres php peuvent être appliqués sur un hôte virtuel par hôte virtuel et que je peux également les appliquer globalement à Apache. Toutefois, cela n’aide en rien les paramètres de la CLI.

Le répertoire php a une structure similaire à Apache, permettant d'activer ou de désactiver des fichiers contenant des directives avec la commande phpenmod. Je peux copier cette structure en créant le répertoire /etc/php/7.0/mydirectives, en plaçant des fichiers php.ini dans ce dossier, puis en créant des liens symboliques de /etc/php/7.0/Apache2/conf.d/ vers mes fichiers de directive php.ini. Cela me permet d’avoir un fichier de directive unique qui ajoute des directives à les deux Apache et à la version CLI de PHP. La seule chose que je ne peux pas faire avec ceci est un hôte virtuel par des directives virtuelles.

Un conseil sur la façon de le faire correctement?

6
Dom

Pour info, configuration les fichiers de /etc/ installés par un paquet ne sont pas écrasés par défaut; lors de la mise à niveau si un fichier change, une invite s'affiche avec options .

Pour revenir à la question initiale, voici comment je le ferais:

  • Créez un fichier de configuration /etc/php/7.0/mods-available/50-mydirectives.ini et faites-y la configuration commune. utilisez ensuite phpenmod mydirectives pour l'activer.

  • Faites une configuration spécifique à Apache et cli dans /etc/php/7.0/Apache2/conf.d/ et /etc/php/7.0/cli/conf.d/ respectivement.

  • Effectuez une configuration spécifique à virtualhost dans le virtualhost même.

Avec la configuration ci-dessus, vous n’aurez pas besoin de modifier le php.ini fourni par le système.

En relation:

5
aaditya1234