Testar e configurar PHP‑FastCGI por site
4 Testes
Agora vamos criar um pequeno ficheiro de teste PHP, por exemplo no site www.example1.com.
vi /srv/www/web1/web/info.phpInsira 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.

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-starterSubstitua/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-cgiReinicie o Apache:
systemctl restart apache2.serviceCrie um phpinfo() para www.example2.com:
vi /srv/www/web2/web/info.phpAbra http://www.example2.com/info.php e verifique a linha Loaded Configuration File — deverá apontar 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-starterConteú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=offReinicie o Apache:
systemctl restart apache2.serviceAbra novamente http://www.example2.com/info.php e procure a linha magic_quotes_gpc — deverá mostrar 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
- Copiar o php.ini base para /srv/www/
/. - Ajustar permissões e propriedade (p. ex. chown webX:webX).
- Editar /srv/www/php-fcgi-scripts/
/php-fcgi-starter e definir PHPRC. - Reiniciar Apache e testar com phpinfo().
- 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
- mod_fcgid: http://fastcgi.coremail.cn/
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- OpenSUSE: http://www.opensuse.org/
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.
Materiais semelhantes
Instalar e usar Podman no Debian 11
Apt‑pinning no Debian: guia prático
Injete FSR 4 com OptiScaler em qualquer jogo
DansGuardian e Squid com NTLM no Debian Etch
Corrigir erro de instalação no Android