Sempre executei o PHP no modo ISAPI. A maior desvantagem desse método é sua baixa estabilidade. Quando o PHP dá errado, o processo do Apache também morre. Mais tarde, vi uma introdução na Internet sobre PHP rodando em modo FastCGI. Os vários benefícios mencionados (estabilidade, segurança, alto desempenho) me fizeram decidir tentar.
No entanto, as coisas estavam longe de correr tão bem quanto o esperado. Pesquisei no Google inúmeras vezes, mas não consegui encontrar nenhuma informação sobre como usar Apache + FastCGI para executar PHP no Windows. Existem algumas pessoas usando IIS + FastCGI para executar PHP. Um dos artigos mencionou que Zend também recomenda executar PHP no modo FastCGI ( http://phplens.com/phpeverywhere/fastcgi-php ).
Após várias horas de exploração, finalmente implementei com sucesso o Apache 1.3 + FastCGI para executar PHP.
Preparação:
Primeiro visite http://www.fastcgi.com/dist/ para baixar mod_fastcgi para Apache. Estou usando mod_fastcgi-2.4.2-AP13.dll. Após o download, copie este arquivo para o diretório de módulos do Apache.
Baixe o PHP (estou usando PHP-5.0.4) e descompacte-o, modifique o arquivo php.ini conforme necessário. Observe que você não precisa copiar nenhum arquivo do diretório PHP para o diretório do Windows.
Modificar configuração:
Em seguida, modifique o arquivo httpd.conf e adicione as seguintes linhas:
LoadModule fastcgi_module module/mod_fastcgi-2.4.2-AP13.dll
ScriptAlias /fcgi-php5/ "d:/usr/local/php-5.0.4/"
FastCgiServer "d:/usr/local/php-5.0.4/php-cgi.exe" -processos 3
# Nota: -processes 3 aqui significa iniciar três processos php-cgi.exe.
# Para parâmetros detalhados do FastCgiServer, consulte a documentação do FastCGI.
Aplicativo AddType/x-httpd-fastphp5 .php
Aplicativo de ação/x-httpd-fastphp5 "/fcgi-php5/php-cgi.exe"
# Descrição: Modifique as duas palavras em negrito acima de acordo com a localização do seu arquivo PHP.
Após a conclusão da modificação, basta reiniciar o Apache.
PERGUNTAS FREQUENTES:
De acordo com minhas muitas experiências, os problemas mais comuns são causados principalmente por caminhos. Portanto, primeiro verifique se todos os caminhos nos arquivos php.ini e httpd.conf estão corretos. A segunda é que se o PHP já foi instalado no sistema antes, então C:Windowsphp.ini precisa ser renomeado ou excluído.
Em segundo lugar, verifique se o diretório onde o arquivo PHP está localizado possui permissões suficientes (configurei para Todos - Controle Total, de qualquer forma, você não precisa considerar tantas restrições de segurança nas máquinas de desenvolvimento).
Vantagens de executar PHP no modo FastCGI:
Existem vários benefícios importantes em executar PHP no modo FastCGI. A primeira é que quando o PHP falhar, ele não derrubará o Apache, mas o próprio processo do PHP irá travar (mas o FastCGI irá reiniciar imediatamente um novo processo PHP para substituir o processo travado). Em segundo lugar, o modo FastCGI tem melhor desempenho ao executar PHP do que o modo ISAPI (originalmente usei o ApacheBench para testar, mas esqueci de salvar os resultados. Se estiver interessado, você mesmo pode testá-lo).
Finalmente, você pode executar PHP5 e PHP4 ao mesmo tempo. Referindo-se ao arquivo de configuração abaixo, foram estabelecidos dois hosts virtuais, um utilizando PHP5 e outro utilizando PHP4.
LoadModule fastcgi_module module/mod_fastcgi-2.4.2-AP13.dll
ScriptAlias /fcgi-php5/ "d:/usr/local/php-5.0.4/"
FastCgiServer "d:/usr/local/php-5.0.4/php-cgi.exe" -processos 3
ScriptAlias /fcgi-php4/ "d:/usr/local/php-4.3.11/"
FastCgiServer "d:/usr/local/php-4.3.11/php.exe"
Ouça 80
NomeVirtualHost *:80
DocumentRoot d:/www
Opções Índices FollowSymlinks MultiViews
Nome do servidor php5.localhost
AddType application/x-httpd-fastphp5 .php
Aplicativo de ação/x-httpd-fastphp5 "/fcgi-php5/php-cgi.exe"
IndexOptions FancyIndexing FoldersFirst
Índices de opções FollowSymLinks MultiViews
Permitir substituir nenhum
Ordem permitir, negar
Permitir de todos
Ouça 8080
NomeVirtualHost *:8080
DocumentRootd:/www
Opções Índices FollowSymlinks MultiViews
Nome do servidor php4.localhost
AddType application/x-httpd-fastphp4 .php
Aplicativo de ação/x-httpd-fastphp4 "/fcgi-php4/php.exe"
Índices de opções FollowSymLinks MultiViews
Permitir substituir nenhum
Ordem permitir, negar
Permitir de todos
Usando a configuração acima, PHP5 é usado ao acessar http://localhost/ e PHP4 é usado ao acessar http://localhost:8080/ . Portanto, desde que esteja configurado corretamente, diferentes hosts virtuais podem usar diferentes versões de PHP.
Algumas desvantagens do modo FastCGI:
Depois de falar das vantagens, vamos falar das desvantagens. Pelo meu uso real, o modo FastCGI é mais adequado para servidores em ambientes de produção. Mas não é adequado para máquinas de desenvolvimento. Porque ao usar o Zend Studio para depurar o programa, FastCGI pensará que o processo PHP expirou e retornará um erro 500 na página. Isso foi tão irritante que voltei para o modo ISAPI na minha máquina de desenvolvimento.
Finalmente, existe uma vulnerabilidade de segurança potencial no modo FastCGI no Windows. Como não encontrei uma maneira de implementar o SuEXEC em um ambiente Windows, o processo PHP sempre é executado com os privilégios mais altos, o que obviamente não é uma boa notícia do ponto de vista da segurança.
Conclusão:
A aplicação do FastCGI neste artigo ainda está em um estágio muito preliminar, e é usada apenas como ponto de partida, esperando que surjam soluções mais maduras.