Como criar arquivos de configuração separados para php (cli) e php-fpm em um arch linux


10

É possível criar arquivos php.ini separados para php (cli) e php-fpm, como é possível no debian e no ubuntu com duas pastas /etc/php/7.0/clie /etc/php/7.0/fpm?

Também serei legal se puder carregar módulos independentes com um conf.ddiretório para cada subsistema.

Alguém tem uma idéia de como configurá-lo separadamente?

Eu também tentei usar a estrutura como ela está configurada no ubuntu 16.04 sem sucesso.

Respostas:


11

Encontrei alguns ajustes para resolver o meu problema.

Primeiro : carregue php.iniarquivos separados :

Um usuário em um fórum do arch linux postou isso na 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.

Se eu estiver criando um /etc/php/php-cli.iniarquivo, apenas esse arquivo será carregado e não /etc/php/php.inicom o phpcomando cli. php-fpmainda está carregando o /etc/php/php.ini.

Segundo : carregue diferentes configurações do módulo:

Eu encontrei na documentação php a PHP_INI_SCAN_DIRvariável de ambiente. Portanto, mudei o /usr/lib/systemd/system/php-fpm.servicearquivo para /etc/systemd/system/php-fpm.servicee adicionei a seguinte configuração ao arquivo de serviço:

[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

Após reiniciar / recarregar os serviços, o php-fpm carrega apenas os arquivos /etc/php/fpm/conf.de não mais de /etc/php/conf.d. Isso me permite configurar cli e fpm separadamente.

Talvez essa não seja a melhor solução, mas eu me encaixo no meu caso de usuário. Se todos tiverem uma solução melhor, não hesite em postar sua resposta!


1
Essa segunda abordagem é extremamente útil para depuração, ou seja, você cria cópias com sufixo do serviço php-fpm e conf files / dirs, especifica uma configuração separada do fpm, especifica opcionalmente um ini diferente --php-inie carrega o xdebug apenas no segundo serviço. Obviamente, o segundo serviço precisa ser executado em uma porta / soquete diferente. Eu configurei Environment="PHP_INI_SCAN_DIR=/etc/php-debugger.d:"no meu arquivo de serviço, os dois pontos adicionados para carregar todos os módulos padrão, além do xdebug que copiei no debugger.ddiretório
218 Walf

3

Você sempre pode fazer isso para a versão cli:

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

e deixe os padrões com os servidos em php-fpm. Ou melhor ainda, adicione isso aos seus scripts de login

# ~ / .bashrc
# aliases e funções pessoais

# PHP fonte pessoal ini
alias php = 'php -c /path/to/your/php.ini'

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

Teria sido melhor se você tivesse declarado quais versões você está usando


boa ideia, mas não exatamente o que estou procurando. Talvez se não houver outro caminho. Obrigado.
Fiete

bem, talvez exista, compartilhe qual versão do php, php-fpm e sua configuração básica (você está usando nginx, apache etc.). Como você configurou o php-fpm. talvez a partir daí, possamos ser úteis
the_architecht
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.