Guia de tecnologias

php-fcgi por site — Testes e configurações

4 min read Administração Atualizado 27 Sep 2025
php-fcgi por site: testar e configurar
php-fcgi por site: testar e configurar

Testes

Crie um pequeno ficheiro PHP para testar, por exemplo no site www.example1.com:

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

Insira o conteúdo abaixo no ficheiro:

Abra o ficheiro no navegador (http://www.example1.com/info.php). Se estiver tudo correto, a saída deve mostrar informações do PHP e a linha Server API deverá indicar CGI/FastCGI:

Saída phpinfo mostrando Server API CGI/FastCGI

Importante: verifique também a linha Loaded Configuration File para confirmar qual php.ini está a ser usado.

php.ini personalizado para cada site

Como cada site tem o seu próprio script wrapper php-fcgi-starter, é possível usar php.ini diferentes por site. Exemplo: copie o php.ini padrão para o diretório do site www.example2.com e ajuste a propriedade:

cp /etc/php5/cgi/php.ini /var/www/web2/
chown web2:web2 /var/www/web2/php.ini

(Agora pode editar /var/www/web2/php.ini conforme necessário.)

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

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

Substitua ou ajuste a variável PHPRC para apontar para /var/www/web2/ e mantenha as demais exportações. O script deverá ficar semelhante a:

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

Recarregue o Apache:

/etc/init.d/apache2 reload

Crie um ficheiro info.php para www.example2.com e abra-o no navegador (http://www.example2.com/info.php). A linha Loaded Configuration File deve mostrar /var/www/web2/php.ini:

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

Nota: garantir que o ficheiro php.ini tem permissões corretas e que o proprietário corresponde ao utilizador do site evita problemas de leitura.

Alterar configurações individuais do PHP

Em vez de fornecer um php.ini inteiro, pode alterar definições individuais adicionando o parâmetro -d ao executável PHP no wrapper. Por exemplo, para desativar magic_quotes_gpc para www.example2.com, edite o wrapper:

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

Altere o exec para incluir a opção -d:

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

Recarregue o Apache novamente:

/etc/init.d/apache2 reload

Volte a aceder ao info.php (http://www.example2.com/info.php) e procure a linha magic_quotes_gpc — deverá indicar Off agora:

phpinfo mostrando magic_quotes_gpc Off

Observação: alguns parâmetros podem estar obsoletos ou removidos em versões mais recentes do PHP; adapte o exemplo à sua versão.

Solução de problemas rápida

  • Verifique permissões e propriedade dos ficheiros php.ini e dos diretórios do site.
  • Confirme que o wrapper php-fcgi-starter é executável e aponta para o binário PHP correto.
  • Use phpinfo() para validar Server API e Loaded Configuration File.
  • Verifique os logs do Apache (/var/log/apache2/error.log) e logs específicos do PHP se existirem.
  • Se usar SELinux ou AppArmor, confirme que as políticas permitem leitura do php.ini personalizado e execução do wrapper.

Quando isto pode falhar

  • O servidor estiver a usar mod_php (o PHP integrado ao Apache) em vez de FastCGI; PHPRC não terá efeito com mod_php.
  • O caminho para o executável PHP (/usr/lib/cgi-bin/php) for diferente na sua distribuição.
  • A opção -d não for suportada pela versão do binário PHP em uso.
  • Permissões incorretas no ficheiro php.ini causarem erro de leitura.

Alternativas

  • Usar FPM (php-fpm) com pools por site para isolamento de configuração e melhor performance. Cada pool pode apontar para um php.ini específico ou usar php_admin_value/php_value.
  • Containerizar sites (Docker) para garantir isolamento completo e ambientes replicáveis.

Mini-metodologia para implementar por-site

  1. Criar um ficheiro info.php para testes em cada site.
  2. Confirmar o funcionamento inicial e identificar o php.ini atual via phpinfo().
  3. Copiar o php.ini base para o diretório do site e ajustar propriedades.
  4. Apontar PHPRC no wrapper php-fcgi-starter e reiniciar o serviço web.
  5. Verificar phpinfo() novamente e ajustar configurações finas via -d se necessário.

Checklist por função

  • Administrador de sistemas:

    • Confirmar caminhos do PHP e permissões.
    • Recarregar Apache e monitorizar logs.
    • Aplicar SELinux/AppArmor se houver políticas de segurança.
  • Desenvolvedor:

    • Testar phpinfo() e confirmar alterações desejadas.
    • Validar que mudanças no php.ini não quebram a aplicação.

Glossário (uma linha cada)

  • PHPRC: variável de ambiente que aponta para o diretório onde o PHP procura php.ini.
  • php-fcgi: modo de execução do PHP via FastCGI usando um wrapper por site.
  • phpinfo(): função PHP que imprime informação de configuração e ambiente.
  • FastCGI: protocolo para executar aplicações persistentes que processam pedidos web.

Links úteis

Sobre o autor

Falko Timme é o proprietário da Timme Hosting (hospedagem nginx ultra-rápida). É mantenedor principal do HowtoForge (desde 2005) e um dos desenvolvedores principais do ISPConfig (desde 2000). Também contribuiu para o livro da O’Reilly “Linux System Administration”.

Resumo

  • Teste com phpinfo() para confirmar Server API e php.ini carregado.
  • Use PHPRC no wrapper php-fcgi-starter para ter php.ini por site.
  • Para ajustes pontuais, empregue a opção -d no binário PHP.
Autor
Edição

Materiais semelhantes

Como ver e excluir o histórico do YouTube
Privacidade

Como ver e excluir o histórico do YouTube

Instalar Asterisk: primeiro PBX passo a passo
Telefonia

Instalar Asterisk: primeiro PBX passo a passo

Corrigir Microsoft Store que não funciona
Guias Técnicos

Corrigir Microsoft Store que não funciona

Varredura e proteção de sites WordPress
Segurança

Varredura e proteção de sites WordPress

RSS para tópicos de fórum com Blogger
Tutoriais

RSS para tópicos de fórum com Blogger

Instalar OCS Inventory NG Server 2 no CentOS 5.5
Linux

Instalar OCS Inventory NG Server 2 no CentOS 5.5