Como posso exibir e registrar erros de PHP no IIS7?

29

Estamos executando o PHP 5.2.5 em um servidor IIS 7 e estamos tendo problemas para tornar os erros do PHP visíveis ... No momento em que ocorre um erro de PHP, o servidor envia um erro de 500 com a mensagem "A página não pode ser exibido porque ocorreu um erro interno do servidor. "

Essa pode ser uma boa configuração para sites de produção, mas é bastante irritante em um servidor de desenvolvimento ... ;-)

Eu tentei configurar php.inipara exibir erros na tela, bem como registrá-los em uma pasta específica, mas parece que o servidor captura todos os erros antes e evita e manipula pelo PHP ...

Alguém sabe o que precisamos fazer para que o IIS exiba erros de PHP na tela? Quaisquer links, dicas ou tutoriais sobre o assunto serão apreciados!

Ben
fonte
Em primeiro lugar, garantir que você tenha estes: log_errors=1, error_reporting=-1, log_errors_max_len=0.
Pacerier 27/08/15
ini_set("display_errors", "on");adicione estas linhas no arquivo php.
ELITE

Respostas:

35

Apenas para verificar, você tem o registro definido como error_reporting = E_ALLe display_errors = Onno seu php.ini? Normalmente, isso é suficiente para exibir esses erros no IIS 7.

Em seguida, dê uma olhada nas configurações do IIS, pois elas podem ser definidas para mostrar apenas mensagens de erro localmente. No editor de configuração do IIS 7, isso está em system.webServer-> httpErrors. Você precisará alterar errorMode para Detalhado de DetalhadoLocalOnly. Obviamente, isso agora significa que qualquer pessoa que navegue no site poderá ver o erro.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Como alternativa, se você deseja mantê-los locais, pode usar a Área de Trabalho Remota para efetuar login no servidor e executar o aplicativo a partir daí, se puder.

Sam Cogan
fonte
1
Sim, verifiquei e está tudo configurado corretamente.
214 Ben Ben
Adicionado algumas informações mais solução de problemas
Sam Cogan
1
Alterar o errorMode para "Detalhado" de "DetalhadoLocalOnly" fez o truque. Obrigado!
Ben
1
Eu tive que remover a coleção de erros HTTP em system.webServer também. Não funcionou com PHP até eu.
1
Por favor, destaque isso system.webServercom meu sangue e adicione uma nota: "Sim, existe uma combinação".
DiGi
2

Só queria acrescentar que "existingResponse" deve ser definido como "PassThrough". Não recebi nenhuma mensagem de erro real sem essa configuração adicional.

Bolli
fonte
1
Onde está localizada essa configuração?
Eugene Mala
0

Você pode fazer isso facilmente usando a GUI do Gerenciador do IIS. Selecione seu site e clique duas vezes em Páginas de erro. Em seguida, clique em 'Editar configurações de recursos ...' e selecione a opção 'erros detalhados' em vez dos 'erros detalhados padrão para solicitações locais e páginas de erro personalizadas para solicitações remotas'. Voilà, simples assim!

Jeroen Aarts
fonte
Onde os logs e erros podem ser mostrados então?
JukEboX #
0

Eu tive que ir para as configurações no servidor da web em configuração php e há uma configuração para o relatório de erros e está definida para produção por padrão. Tive que mudar para desenvolvimento mesmo depois de alterar o php.ini e a sugestão aqui. Estou usando o iis 7.5 no 2008 R2.

naps1saps
fonte