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.