Comment puis-je créer des fichiers de configuration séparés pour php (cli) et php-fpm sur un arch linux


10

Est-il possible de créer des fichiers php.ini séparés pour php (cli) et php-fpm, comme c'est possible sur debian et ubuntu avec deux dossiers /etc/php/7.0/cliet /etc/php/7.0/fpm?

Je serai également cool si je peux charger des modules indépendants avec un conf.drépertoire pour chaque sous-système.

Quelqu'un at-il une idée de comment le configurer séparément?

J'ai également essayé d'utiliser la structure comme si elle était configurée dans Ubuntu 16.04 sans succès.

Réponses:


11

J'ai trouvé quelques ajustements pour résoudre mon problème.

Tout d'abord : chargez un php.inifichier séparé :

Un utilisateur dans un forum arch linux a posté ceci depuis la man phppage:

FILES
   php-cli.ini    The configuration file for the CLI version of PHP.

   php.ini        The standard configuration file will only be used when php-cli.ini cannot be found.

Si je crée un /etc/php/php-cli.inifichier, seul ce fichier sera chargé et non /etc/php/php.iniavec la phpcommande cli. php-fpmcharge toujours le fichier /etc/php/php.ini.

Deuxièmement : charger différentes configurations de modules:

J'ai trouvé dans la documentation php la PHP_INI_SCAN_DIRvariable d'environnement. J'ai donc déplacé le /usr/lib/systemd/system/php-fpm.servicefichier vers /etc/systemd/system/php-fpm.serviceet ajouté la configuration suivante au fichier de service:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
Environment="PHP_INI_SCAN_DIR=/etc/php/fpm/conf.d" ; <-- I have added this line
PIDFile=/run/php-fpm/php-fpm.pid
ExecStart=/usr/bin/php-fpm --nodaemonize --fpm-config /etc/php/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

Après avoir redémarré / rechargé les services, php-fpm charge uniquement les fichiers depuis /etc/php/fpm/conf.det plus depuis /etc/php/conf.d. Cela me permet de configurer cli et fpm séparément.

Ce n'est peut-être pas la meilleure solution mais je correspond à mon cas d'utilisation. Si tout le monde a une meilleure solution, n'hésitez pas à poster votre réponse!


1
Cette deuxième approche est extrêmement utile pour le débogage, c'est-à-dire que vous créez des copies suffixées du service php-fpm et des fichiers / répertoires conf, spécifiez une configuration fpm distincte comme vous l'avez, spécifiez éventuellement un autre ini avec --php-ini, puis chargez le xdebug uniquement dans le second un service. Bien sûr, le deuxième service doit s'exécuter sur un port / socket différent. J'ai mis Environment="PHP_INI_SCAN_DIR=/etc/php-debugger.d:"dans mon fichier de service, les deux points ajoutés afin qu'il charge tous les modules par défaut en plus de celui de xdebug que j'ai copié dans le répertoire debugger.d.
Walf

3

Vous pouvez toujours le faire pour la version cli:

php -c /path/to/your/php.ini

et laissez les valeurs par défaut avec celles servies sur php-fpm. Ou encore mieux, ajoutez ceci à vos scripts de connexion

# ~ / .bashrc
# alias et fonctions personnelles

# PHP source ini personnel
alias php = 'php -c /path/to/your/php.ini'

# colorize ls
alias ls = 'ls --color'
...

Il aurait été préférable que vous indiquiez la ou les versions que vous utilisez


bonne idée, mais pas exactement ce que je recherche. Peut-être s'il n'y avait pas d'autre moyen. Merci.
Fiete

eh bien, peut-être qu'il y en a, s'il vous plaît partagez la version de php, php-fpm et votre configuration de base (utilisez-vous nginx, apache, etc.). Comment vous avez configuré php-fpm. peut-être
qu'à
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.