Come posso creare file di configurazione separati per php (cli) e php-fpm su un arch linux


10

È possibile creare file php.ini separati per php (cli) e php-fpm, come è possibile su debian e ubuntu con due cartelle /etc/php/7.0/clie /etc/php/7.0/fpm?

Sarò anche bello se posso caricare moduli indipendenti con una conf.ddirectory per ciascun sottosistema.

Qualcuno ha un'idea di come posso configurarlo separatamente?

Ho anche provato a usare la struttura come se fosse configurata in Ubuntu 16.04 senza successo.

Risposte:


11

Ho trovato alcune modifiche per risolvere il mio problema.

Primo : carica un php.inifile separato :

Un utente in un forum di Arch Linux ha pubblicato questo dalla man phppagina:

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.

Se sto creando un /etc/php/php-cli.inifile, questo file verrà caricato e non /etc/php/php.inicon il phpcomando cli. php-fpmsta ancora caricando il file /etc/php/php.ini.

Secondo : caricare diverse configurazioni del modulo:

Ho trovato nella documentazione php la PHP_INI_SCAN_DIRvariabile d'ambiente. Pertanto ho spostato il /usr/lib/systemd/system/php-fpm.servicefile in /etc/systemd/system/php-fpm.servicee ho aggiunto la seguente configurazione al file di servizio:

[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

Dopo aver riavviato / ricaricato i servizi, php-fpm carica solo i file da /etc/php/fpm/conf.de non più da /etc/php/conf.d. Questo mi permette di configurare cli e fpm separatamente.

Forse questa non è la soluzione migliore ma mi adatta al mio caso d'uso. Se tutti hanno una soluzione migliore, non esitare a pubblicare la tua risposta!


1
Questo secondo approccio è estremamente utile per il debug, ovvero si creano copie suffissate del servizio php-fpm e file / directory conf, si specifica una configurazione fpm separata come si ha, si opzionalmente si specifica un ini diverso con --php-ini, quindi si carica l'xdebug solo nel secondo servizio. Naturalmente, il secondo servizio deve essere eseguito su una porta / socket diversa. Ho impostato Environment="PHP_INI_SCAN_DIR=/etc/php-debugger.d:"nel mio file di servizio, i due punti aggiunti in modo da caricare tutti i moduli predefiniti oltre a quello xdebug che ho copiato nella directory debugger.d.
Walf,

3

Puoi sempre farlo per la versione cli:

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

e lasciare i valori predefiniti con quelli serviti su php-fpm. O ancora meglio, aggiungilo ai tuoi script di accesso

# ~ / .bashrc
# alias e funzioni personali

# PHI ini personali sorgente
alias php = 'php -c /path/to/your/php.ini'

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

Sarebbe stato meglio se avessi dichiarato quali versioni stai utilizzando


bella idea, ma non è esattamente quello che sto cercando. Forse se non ci fosse altro modo. Grazie.
Fiete,

bene, forse c'è, per favore condividi quale versione di php, php-fpm e la tua configurazione di base (stai usando nginx, apache ecc.). Come hai configurato php-fpm. forse da lì, possiamo essere d'aiuto
the_architecht,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.