¿Cómo puedo crear archivos de configuración separados para php (cli) y php-fpm en un arch linux


10

¿Es posible crear archivos php.ini separados para php (cli) y php-fpm, como es posible en debian y ubuntu con dos carpetas /etc/php/7.0/cliy /etc/php/7.0/fpm?

También sería genial si puedo cargar módulos independientes con un conf.ddirectorio para cada subsistema.

¿Alguien tiene una idea de cómo puedo configurarlo por separado?

También intenté usar la estructura como si estuviera configurada en ubuntu 16.04 sin éxito.

Respuestas:


11

He encontrado algunos ajustes para resolver mi problema.

Primero : cargue php.iniarchivos separados :

Un usuario en un foro de Arch Linux publicó esto desde la man phppágina:

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 creo un /etc/php/php-cli.iniarchivo, solo se cargará este archivo y no /etc/php/php.inicon el phpcomando cli. php-fpmtodavía está cargando el /etc/php/php.ini.

Segundo : cargar diferentes configuraciones de módulos:

He encontrado en la documentación de php la PHP_INI_SCAN_DIRvariable de entorno. Por lo tanto, moví el /usr/lib/systemd/system/php-fpm.servicearchivo /etc/systemd/system/php-fpm.servicey agregué la siguiente configuración al archivo de servicio:

[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

Después de reiniciar / volver a cargar los servicios, php-fpm carga solo los archivos /etc/php/fpm/conf.dy ya no /etc/php/conf.d. Esto me permite configurar cli y fpm por separado.

Quizás esta no sea la mejor solución, pero se ajusta a mi caso de uso. Si todos tienen una mejor solución, ¡no dude en publicar su respuesta!


1
Este segundo enfoque es extremadamente útil para la depuración, es decir, crea copias con sufijos del servicio php-fpm y conf files / dirs, especifica una configuración fpm separada como la que tiene, opcionalmente especifique una ini diferente --php-ini, luego cargue el xdebug solo en el segundo Servicio. Por supuesto, el segundo servicio debe ejecutarse en un puerto / socket diferente. Lo configuré Environment="PHP_INI_SCAN_DIR=/etc/php-debugger.d:"en mi archivo de servicio, agregó los dos puntos para que cargue todos los módulos predeterminados además del xdebug que copié en el debugger.ddirectorio.
Walf

3

Siempre puedes hacer esto para la versión cli:

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

y deje los valores predeterminados con los que se sirven en php-fpm. O incluso mejor, agregue esto a sus scripts de inicio de sesión

# ~ / .bashrc
# alias y funciones personales

# PHP fuente personal ini
alias php = 'php -c /path/to/your/php.ini'

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

Hubiera sido mejor si hubieras declarado qué versión (s) estás utilizando


Buena idea, pero no es exactamente lo que estoy buscando. Quizás si no hay otra manera. Gracias.
Fiete

bueno, tal vez lo hay, por favor comparta qué versión de php, php-fpm y su configuración básica (está utilizando nginx, apache, etc.). Cómo ha configurado php-fpm. quizás a partir de ahí, podemos ser útiles
the_architecht
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.