Guia de tecnologias

Testar e configurar PHP‑FastCGI por site

4 min read DevOps Atualizado 21 Oct 2025
PHP‑FastCGI por site: testes e php.ini
PHP‑FastCGI por site: testes e php.ini

4 Testes

Agora vamos criar um pequeno ficheiro de teste PHP, por exemplo no site www.example1.com.

vi /srv/www/web1/web/info.php

Insira o conteúdo PHP:

Abra o ficheiro no navegador (http://www.example1.com/info.php). Se tudo estiver correto, a saída deverá ser semelhante à mostrada abaixo e deverá ver CGI/FastCGI na linha Server API.

Saída phpinfo mostrando Server API com CGI/FastCGI

Importante: o phpinfo() revela a configuração activa do PHP. Não deixe este ficheiro em produção depois dos testes.

5 php.ini personalizado por site

Cada site usa o seu próprio script wrapper php-fcgi-starter, por isso é possível definir php.ini diferentes por site. Exemplo: copiar o php.ini padrão para o diretório do site www.example2.com e dar a propriedade ao utilizador do site.

cp /etc/php5/fastcgi/php.ini /srv/www/web2/
chown web2:web2 /srv/www/web2/php.ini

(Agora pode modificar /srv/www/web2/php.ini conforme necessário.)

Edite o wrapper do site para apontar PHPRC para o novo diretório:

vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter

Substitua/adicione a linha PHPRC com /srv/www/web2/ e garanta que o script contém as variáveis desejadas:

#!/bin/sh
PHPRC=/srv/www/web2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi

Reinicie o Apache:

systemctl restart apache2.service

Crie um phpinfo() para www.example2.com:

vi /srv/www/web2/web/info.php

Abra http://www.example2.com/info.php e verifique a linha Loaded Configuration File — deverá apontar para /srv/www/web2/php.ini.

phpinfo mostrando Loaded Configuration File apontando para /srv/www/web2/php.ini

6 Alterar configurações únicas do PHP

Se preferir não fornecer um php.ini inteiro, pode alterar definições isoladas adicionando o parâmetro -d ao executável php-cgi no wrapper. Exemplo: desactivar magic_quotes_gpc para www.example2.com.

vi /srv/www/php-fcgi-scripts/web2/php-fcgi-starter

Conteúdo do wrapper com a alteração:

#!/bin/sh
PHPRC=/etc/php5/fastcgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi -d magic_quotes_gpc=off

Reinicie o Apache:

systemctl restart apache2.service

Abra novamente http://www.example2.com/info.php e procure a linha magic_quotes_gpc — deverá mostrar Off.

phpinfo mostrando magic_quotes_gpc configurado como Off

Quando pode falhar

  • PHPRC apontado para um diretório sem permissão adequada impedirá o PHP de ler o ficheiro php.ini. Verifique proprietários e permissões.
  • Se o wrapper não for executado (permissões, shebang errado, ou caminho do php-cgi diferente), o site poderá cair; verifique /var/log/apache2/error.log e logs do sistema.
  • Versões do PHP diferentes entre o binário e o php.ini podem causar configurações ignoradas.
  • Módulos carregados globalmente (p. ex. via Apache) podem conflitar com definições por site.

Abordagens alternativas

  • Usar pools PHP-FPM por site (recomendado em distribuições modernas) para melhor isolamento e gestão de processos.
  • Definir diretivas PHP via .htaccess quando o SAPI o permite (mod_php) — não aplicável ao FastCGI sem suporte.
  • Gerir configurações por container (Docker) para isolamento total entre sites.

Mini‑metodologia: passos essenciais para configurar um php.ini por site

  1. Copiar o php.ini base para /srv/www//.
  2. Ajustar permissões e propriedade (p. ex. chown webX:webX).
  3. Editar /srv/www/php-fcgi-scripts//php-fcgi-starter e definir PHPRC.
  4. Reiniciar Apache e testar com phpinfo().
  5. Remover ficheiros phpinfo() após validação.

Checklist para implantação (Admin / Dev)

  • Admin:

    • Confirmar que o wrapper php-fcgi-starter tem shebang correto e permissões executáveis.
    • [ ] Definir PHPRC e variáveis PHPFCGI* conforme carga esperada.
    • Reiniciar Apache e verificar logs.
  • Developer:

    • Criar info.php e validar Server API e Loaded Configuration File.
    • Validar mudanças específicas (-d) e testar funcionalidades da aplicação.
    • Remover phpinfo() após testes.

Casos de teste e critérios de aceitação

  • Teste 1: phpinfo mostra Server API = CGI/FastCGI.
  • Teste 2: Loaded Configuration File aponta para o php.ini do site.
  • Teste 3: Diretiva alterada via -d aparece como overridden no phpinfo.

Critérios de aceitação: os três testes acima passam sem erros nos logs do Apache; o ficheiro phpinfo é removido depois.

Caixa de factos

  • Exemplo de variáveis do wrapper: PHP_FCGI_MAX_REQUESTS=5000 e PHP_FCGI_CHILDREN=8.
  • PHPRC aceita um diretório onde o PHP procura php.ini.
  • O método funciona para PHP-CGI/FastCGI, não para mod_php.

Glossário (linha)

  • PHPRC: variável de ambiente que indica o diretório onde o PHP procura php.ini.
  • php-fcgi-starter: script wrapper que inicializa um processo php-cgi para um site.
  • phpinfo(): função PHP que imprime a configuração activa.

Links úteis

Resumo: Teste sempre com phpinfo(), aponte PHPRC para um php.ini por site ou use -d para alterações pontuais. Verifique permissões, reinicie Apache e remova ficheiros de teste quando terminar.

Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE