Guia de tecnologias

PHP com FastCGI — testes e php.ini por site

3 min read DevOps Atualizado 01 Oct 2025
PHP com FastCGI: testes e php.ini por site
PHP com FastCGI: testes e php.ini por site

TL;DR

Teste PHP criando um info.php e abra no navegador para confirmar CGI/FastCGI. Cada site pode usar seu próprio php.ini ou alterar opções individuais via -d no php-cgi. Reinicie o Apache após mudanças.

4 Testes

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

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

Insira o conteúdo seguinte:

Abra esse ficheiro no navegador: http://www.example1.com/info.php. Se tudo correr bem, a saída do phpinfo deverá ser semelhante a esta e você verá CGI/FastCGI na linha Server API:

Saída do phpinfo mostrando Server API como CGI/FastCGI

Importante: mantenha o ficheiro info.php temporário. Ele expõe muita informação sobre a configuração do servidor.

5 php.ini personalizado para cada site

Como cada site usa o seu próprio script wrapper php-fcgi-starter, é possível definir php.ini diferentes por site. Exemplo: copiar o php.ini padrão para o diretório do site /srv/www/web2/ e ajustar permissões:

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

(Agora você pode editar /srv/www/web2/php.ini conforme necessário.)

Edite o script wrapper do site para apontar para o novo PHPRC:

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

Substitua ou ajuste a linha PHPRC para apontar para /srv/www/web2/:

#!/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 depois de alterar o script:

/etc/init.d/apache2 restart

Crie um novo info.php para www.example2.com:

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

Conteúdo:

Abra no navegador: http://www.example2.com/info.php. Na linha Loaded Configuration File deverá aparecer /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 passar um php.ini completo, pode alterar opções individuais adicionando o switch -d ao executável php-cgi no script wrapper. Exemplo: desabilitar magic_quotes_gpc para www.example2.com.

Abra o wrapper:

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

Ajuste para incluir o parâmetro -d:

#!/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:

/etc/init.d/apache2 restart

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

phpinfo mostrando magic_quotes_gpc definido como Off

7 Links úteis

Quando isso pode falhar

  • PHPRC incorreto: se PHPRC não apontar para um diretório válido com php.ini, o PHP usará a configuração padrão.
  • Permissões: o ficheiro php.ini deve ser legível pelo usuário que executa o processo PHP-FastCGI.
  • Variáveis conflitantes: combinar php.ini personalizado e flags -d pode gerar comportamento inesperado. Prefira uma abordagem clara.

Abordagens alternativas

  • Usar poolers FastCGI geridos (por exemplo, systemd socket-activated) em vez de scripts shell, para melhor supervisão.
  • Usar PHP-FPM quando disponível; facilita pools por site e configurações por pool.
  • Para aplicações isoladas, conteiners (Docker) oferecem isolamento completo da configuração do PHP.

Checklist por função

Administrador de sistemas:

  • Verificar PHPRC e permissões do php.ini.
  • Reiniciar Apache após alterações.
  • Remover info.php quando terminar os testes.

Desenvolvedor:

  • Confirmar valores de ini_set e overrides funcionam como esperado.
  • Testar funcionalidades dependentes de configurações (ex.: upload_max_filesize, memory_limit).

Mini-metodologia de implantação rápida

  1. Criar php.ini de teste em /srv/www/nomedosite/php.ini.
  2. Ajustar php-fcgi-starter para PHPRC apontar para o diretório do site.
  3. Reiniciar Apache e validar via phpinfo().
  4. Monitorar logs de erro por 24–48 horas.
  5. Promover para produção quando validado.

Snippets / Cheat sheet

  • Reiniciar Apache:
/etc/init.d/apache2 restart
  • Exemplo mínimo de wrapper com override de opção:
#!/bin/sh
PHPRC=/caminho/para/site/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi -d display_errors=0

Glossário (uma linha)

PHPRC: variável de ambiente que indica ao PHP onde procurar o php.ini.

Resumo

  • Crie um info.php para validar se o PHP está a correr como CGI/FastCGI.
  • Pode usar php.ini por site apontando PHPRC para o diretório do site.
  • Para mudanças rápidas, use exec /usr/bin/php-cgi -d opção=valor no wrapper.
  • Sempre reinicie o Apache e remova ficheiros de diagnóstico após os testes.
Autor
Edição

Materiais semelhantes

Como minerar Dogecoin no laptop — guia prático
Criptomoedas

Como minerar Dogecoin no laptop — guia prático

Velocidades diferentes: trackpad e mouse
Tutoriais

Velocidades diferentes: trackpad e mouse

Corrigir Fatal D3D Error 25 em RE4 Remake
Suporte Técnico

Corrigir Fatal D3D Error 25 em RE4 Remake

Testar roles Ansible com Molecule e Docker
DevOps

Testar roles Ansible com Molecule e Docker

PHP com FastCGI: testes e php.ini por site
DevOps

PHP com FastCGI: testes e php.ini por site

Extrair texto de imagens com OCR — Guia prático
OCR

Extrair texto de imagens com OCR — Guia prático