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.
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!
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
--php-ini
e carrega o xdebug apenas no segundo serviço. Obviamente, o segundo serviço precisa ser executado em uma porta / soquete diferente. Eu configureiEnvironment="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 nodebugger.d
diretórioVocê sempre pode fazer isso para a versão cli:
e deixe os padrões com os servidos em php-fpm. Ou melhor ainda, adicione isso aos seus scripts de login
Teria sido melhor se você tivesse declarado quais versões você está usando
fonte