Por que qualquer página .php me fornece um erro 404 no Server 2008 com o IIS 7.0?

4

Estou usando o FastCGI para configurar o PHP. Eu segui as instruções no site iis.net. Eu adicionei o mapeamento de manipulador, editei o arquivo php.ini conforme especificado. Nada disso funciona, apenas recebo um erro 404.0 dizendo "A página que você está procurando foi removida", mesmo que o caminho físico exibido na página de erro exista. Depois de tentar este método manual (descompactar o php, adicionar manualmente o mapeamento de identificadores, etc), eu removi tudo e tentei o Web Platform Installer (ugh), mas ainda tenho o mesmo problema.

Um pouco mais de informação:
A página Erro Detalhado diz que o manipulador é meu manipulador StaticFile (não o PHP FastCGI). Também fornece o código de erro 0x80070002

Quando olho para os logs, ele mostra "GET /php.ini" como erro 404. Por que o IIS está procurando por isso?

    
por scottm 26.02.2010 / 17:12

8 respostas

3

Quando recebi esta mensagem de erro, notei que nem sequer tinha php-cgi.exe no diretório C:\Program Files\PHP .

O outro método útil que encontrei foi que, se você está recebendo erros FastCGI, tente clicar duas vezes diretamente no arquivo php-cgi.exe e, em seguida, procure nos logs do Aplicativo do Windows por erros se ele falhar. Eu recebi isso deste comentário de um relatório de bugs do PHP :

[2010-04-22 06:43 UTC] sejo at iteontech dot com

After debugging IIS and a bunch of other crazy things, this is what worked for me. I have PHP 5.3.2 on Windows 7 and IIS 7. Try to execute PHP-CGI.EXE (BY DOUBLECLICKING ON IT). See if you get any error messages/ pop-ups. I got a ton of them and it all boiled down on having a bunch of extensions turned on, but not being available in my ext folder. Clear the PHP.INI of those invalid extensions and the problem should go away.

    
por 25.09.2012 / 19:11
2

Bem, não tenho certeza do que fiz, mas de alguma forma consertei. Eu removi o site e adicionei-o novamente, em seguida, verifiquei minhas configurações de Mapeamento FastCGI, tudo parecia exatamente como antes, mas desta vez funciona. Eu ainda gostaria de saber por que eu estava recebendo o erro, se possível.

    
por 01.03.2010 / 17:02
2

Por padrão, o IIS não servirá nenhum arquivo para o qual não tenha um mapeamento de tipo MIME válido e a resposta será 404

Se a extensão .php não tiver um tipo MIME definido para o site que você está tentando executar o PHP, o IIS não exibirá o arquivo, mesmo se houver um manipulador relevante para esse tipo de arquivo.

Acabei de verificar o Gerenciador do IIS 7 no meu servidor e não há mapeamento para PHP por padrão na lista Tipos de MIME. Desconfio que, se o seu site existia antes da instalação do FastCGI, ele não adiciona automaticamente o mapeamento a sites existentes. você criou o novo site FastCGI já estava instalado.

Claro que eu poderia estar completamente errado sobre o último bit, mas o problema de mapeamento da extensão de arquivo para tipo MIME é um recurso de segurança do IIS - nenhum arquivo = nenhum arquivo servido com essa extensão

    
por 02.03.2010 / 17:13
1

Minha solução para esse erro tinha duas partes:

  1. (da resposta do @ icc97) - clique duas vezes em php-cgi.exe na sua pasta PHP para ter certeza de que ele pode iniciar ok.
  2. Acontece que meu arquivo index.php foi realmente denominado index.php.htm (desative "ocultar nomes de extensões de arquivos")
por 02.12.2014 / 11:56
1

Só queria adicionar a resposta estúpida para que qualquer outra pessoa encontre esse problema com o mesmo problema. "Um companheiro" criou o arquivo de teste no servidor. Ele estava recebendo o erro 404. O que aconteceu, foi que o Windows estava escondendo extensões de arquivos, então o arquivo era chamado de index.php.txt ... Não é engraçado, 30 minutos.

    
por 24.11.2016 / 11:12
0

Eu lidei com um problema semelhante, todas as respostas que encontrei na web não foram de nenhuma ajuda. Primeiro, suponho que você tenha tentado executar o link e tudo parece estar correto. Se este for o caso eu sugeriria verificar em seu arquivo php.ini a configuração em:

[data] ; Define o fuso horário padrão usado pelas funções de data date.timezone =

O mais provável é que esteja em branco como o meu, isso gera um erro bobo com a versão mais recente do php e por qualquer razão você estará morto na água até que você tenha um fuso horário especificado (o meu é America / Chicago).

Eu posso estar assumindo muito sobre a sua situação, mas soa muito parecido com o meu e passei vários dias procurando uma resposta frustrada.

    
por 26.02.2010 / 19:05
0

Existe algum motivo para você não estar usando o instalador para fazer o trabalho para você?

Além disso, você pode confirmar que o mapeamento do manipulador .php está definido corretamente?

Path : *.php
State : Enabled
Path Type : File or Folder
Handler : FastCgiModule
    
por 01.03.2010 / 15:58
0

Eu tive esse problema hoje, mas nenhuma das correções acima funcionou para mim. Liguei a manipulação detalhada de erros no IIS e descobri que estava recebendo um erro 404.7: 'O módulo de filtragem de solicitações está configurado para negar a extensão do arquivo'.

Eu entrei no menu 'Request Filtering' no gerenciador do IIS, adicionei '.php' como um tipo de arquivo aprovado e isso resolveu o problema para mim.

    
por 04.09.2017 / 16:21