Precisamos passar explicitamente a localização do php.ini para o php-fpm?

4

Estou vendo um problema estranho em que meu php.ini não é usado se eu não o transmitir explicitamente para php-fpm ao iniciá-lo.

Este é o script iniciante que estou usando:

start on (filesystem and net-device-up IFACE=lo)
stop on runlevel [016]

pre-start script
    mkdir -p /run/php
end script


expect fork
respawn
exec /usr/local/php/sbin/php-fpm --fpm-config /etc/php/php-fpm.conf

Se o PHP é iniciado com o acima, meu php.ini nunca é usado, mesmo que seja em Configuration File (php.ini) Path .

Esta é a parte relevante de phpinfo() :

Configuration File (php.ini) Path           /etc/php/
Loaded Configuration File                   (none)
Scan this dir for additional .ini files     (none)
Additional .ini files parsed                (none) 

Se eu modificar a última linha do script upstart para apontar php-fpm para php.ini explicitamente:

exec /usr/local/php/sbin/php-fpm --fpm-config /etc/php/php-fpm.conf -c /etc/php/php.ini

Em seguida, vemos que o php.ini está carregado:

Configuration File (php.ini) Path           /etc/php/
Loaded Configuration File                   /etc/php/php.ini
Scan this dir for additional .ini files     (none)
Additional .ini files parsed                (none) 

Por que isso acontece? Isso é um capricho no php-fpm?

Atualização menor: Isso também parece ser um problema para o php5-fpm instalado usando apt-get .

Eu fiz um teste de instalação em uma máquina virtual Ubuntu Server 12.04 executando o seguinte:

sudo apt-get install nginx php5-fpm

O PHP-FPM e o nginx foram iniciados após a instalação e tudo pareceu bem. Eu então descomentei as configurações do php na configuração do nginx e coloquei um arquivo de teste phpinfo() para inspecionar as configurações do PHP.

Os bits relevantes são:

Configuration File (php.ini) Path           /etc/php5/fpm
Loaded Configuration File                   (none)
Scan this dir for additional .ini files     /etc/php5/fpm/conf.d
Additional .ini files parsed                /etc/php5/fpm/conf.d/10-pdo.ini 

Eu notei que nenhum php.ini foi carregado. No entanto, se eu for para /etc/php5/fpm , posso ver que existe um php.ini . Também verifiquei os scripts de inicialização para o PHP-FPM e o parâmetro -c não foi usado para vincular o arquivo ini ao PHP. Isso pode ser confuso para pessoas que esperariam que o php.ini fosse carregado automaticamente pelo PHP-FPM.

    
por F21 14.12.2012 / 06:21

1 resposta

1

Não, não precisamos explicitamente passar o arquivo php.ini para php-fpm ao iniciá-lo.

Primeiro, lide com o php5-fpm instalado usando apt-get . Depois que reiniciei o servidor, o php.ini foi carregado. Foi estranho, mas funcionou.

De volta à minha pergunta.

Observe que eu compilei o PHP com --with-config-file-path=/etc/php/ . O problema é causado pela adição de uma barra à direita da pasta ao usar --with-config-file-path .

No meu caso, eu corri make clean para limpar os binários compilados antigos. Em seguida, executei o configure com --with-config-file-path=/etc/php (observe que não há barra final para a pasta). Então make e make install .

Depois disso, você verá que o php.ini in /etc/php é carregado automaticamente, independentemente de passá-lo para php-fpm usando a opção -c ou não.

    
por 18.12.2012 / 06:30