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

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:
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:
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:
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
- Criar um ficheiro info.php para testes em cada site.
- Confirmar o funcionamento inicial e identificar o php.ini atual via phpinfo().
- Copiar o php.ini base para o diretório do site e ajustar propriedades.
- Apontar PHPRC no wrapper php-fcgi-starter e reiniciar o serviço web.
- 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
- mod_fcgid: http://httpd.apache.org/mod_fcgid/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- Debian: http://www.debian.org/
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.
Materiais semelhantes

Como ver e excluir o histórico do YouTube
Instalar Asterisk: primeiro PBX passo a passo

Corrigir Microsoft Store que não funciona

Varredura e proteção de sites WordPress
