Erro ao iniciar o Apache com o módulo PHP no Windows: “Não é possível carregar o php5apache2_4.dll no servidor: acesso negado”

4

Estou tendo alguma dificuldade em instalar o Apache 2.4.7 com PHP 5.5.7 no Windows Vista Service Pack 2.

Ao tentar iniciar o Apache, estou recebendo o erro:

Syntax error on line 176 of C:/Program Files/Apache/conf/httpd.conf: Cannot load C:/Program Files/PHP/php5apache2_4.dll into server: Access is denied.

Eu examinei tópicos relacionados, ambos em aqui e outros sites, mas os únicos problemas que posso encontrar são onde o erro é" O procedimento especificado não pôde ser encontrado "ou" O módulo especificado não pôde ser encontrado ", nenhum dos que são relevantes para o meu problema.

Como você pode ver pelos links de download, estou usando as versões Win32 do Apache e PHP e a versão segura do PHP. Eu tenho certeza que o arquivo C: / Program Files / PHP / php5apache2_4.dll existe e reinstalado o Visual C ++ Redistribuível ( link ; VSU_4 \ vcredist_x86.exe). Eu também tentei mover as pastas Apache e PHP para fora dos Arquivos de Programas, mas isso não resolveu o problema.

Como o erro que estou recebendo é "Acesso negado", presumo que o problema seja uma das permissões de arquivo, mas não tenho certeza sobre as permissões a serem alteradas e o que alterá-las. Então, qualquer ajuda que eu puder receber será muito apreciada.

Editar

Após alguns testes, parece que esse problema só surge do PHP 5.5.4 em diante. Revertendo para o 5.5.3 resolve o problema.

Editar 2

O problema parece ser que php5ts.dll não pode ser lido, apesar de exibir permissões legíveis. Mesmo quando os programas são "executados como administradores", o arquivo não pode ser aberto (mas pode ser excluído e renomeado). O arquivo pode ser aberto se a extensão for alterada para algo diferente de dll ou exe , e outros arquivos na mesma pasta poderão ser abertos mesmo que sejam renomeados para php5ts.dll (substituindo o original).

    
por MichaelRushton 15.12.2013 / 13:30

2 respostas

1

Fatos e observações

Vamos analisar os fatos:

  1. Funciona com uma extensão diferente das extensões executáveis / de código típicas, como .dll , .exe , etc.
  2. Não funciona com um nome de arquivo diferente
  3. Funcionou muito bem com uma versão anterior; somente a versão mais recente está com problemas
  4. Funciona muito bem no modo de segurança
  5. Modo de segurança desativa todos os drivers e serviços não essenciais
  6. Não mostra bloqueios ou alças abertas
  7. Ele diz access denied
  8. Não pode ser movido, aberto, copiado, etc.

Análise

Os pontos 1-3 indicam que algo sobre o conteúdo do arquivo está acionando o problema. Isso parece muito com algum tipo de programa antivírus que gera um falso positivo.

Os pontos 4-6 apontam para algum tipo de serviço ou driver que está causando o problema.

Técnico

Os softwares de segurança, como os programas antivírus, geralmente precisam ser executados em um nível baixo para evitar que o malware entre, por isso usam drivers e são executados no processo System . Isso evita que a maioria dos programas consiga detectar que um arquivo está bloqueado pelo programa de segurança (e é por isso que o Unlocker não conseguiu encontrar identificadores abertos) e, mesmo que possa, eles mostram que System está aberto, o que não é t muito útil.

Aplicação e Explicação

Você disse que instalou o AVG em determinado momento, mas o desinstalou. Aparentemente, o AVG não foi completamente desinstalado (perdeu uma reinicialização?) E seus drivers foram deixados para trás.

Agora, sempre que você acessa um arquivo, o driver bloqueia a verificação, mas como o restante do programa desaparece, não é possível avisá-lo se achar que o arquivo é suspeito. Se o programa ainda estiver instalado, ele mostrará um prompt e perguntará se você deseja fazer (ou, mais provavelmente, nos dias de hoje, colocar / excluir automaticamente o arquivo para "proteger" você). Desde que o programa se foi, o componente do driver fica lá esperando, mantendo o arquivo bloqueado.

Como você desinstalou o AVG há algum tempo, provavelmente ele não tem as definições mais recentes (se houver alguma), portanto, não seria possível deixar a versão mais recente de php5ts.dll sozinha e lançou um falso positivo , bloqueando assim o arquivo sem qualquer maneira de dizer que ele foi cancelado.

AVG

Não sei se o AVG alguma vez reclamou dessa versão específica de php5ts.dll quando saiu pela primeira vez, mas não agora .

Além disso, eu não sei se o AVG é conhecido por ter muitos falsos positivos, embora eu tenha certeza de que li sobre alguns AV vender; mas uma verificação superficial parece indicar que pesquisa por false positive tem pelo menos 33% mais acessos para o AVG do que outros fornecedores de AV.

Conselhos para o futuro

Esse problema ocorreu porque o AVG não foi completamente desinstalado e deixou restos para trás. Infelizmente este é um problema muito comum. No futuro, ao desinstalar qualquer software, seja ele programas antivírus, drivers / software da impressora, etc., verifique sempre se o fornecedor forneceu algum tipo de ferramenta / utilitário de remoção / limpeza (experimente diferentes combinações de palavras para se certificar de que você encontrá-lo).

A maioria dos fornecedores de software e impressoras de segurança, bem como algumas outras empresas de software e fabricantes de hardware, terão um programa (geralmente pequeno) que você pode baixar e executar para eliminar todos os vestígios de seus softwares. Infelizmente, isso geralmente não é incorporado ao desinstalador e deve ser baixado manualmente de seu site. Às vezes, será nas partes normais de seu site, às vezes será enterrado em algum lugar em seus fóruns de suporte. (Estes são geralmente compilados a partir de relatórios de bugs de pessoas que encontraram arquivos que sobraram, entradas de registro, serviços, etc. que são deixados para trás pelo desinstalador, e é por isso que eles são separados.)

No seu caso, você pode ter (e ainda deve) usar o "removedor" do AVG .

NB : ao procurar por um utilitário de limpeza para software de segurança, tenha cuidado para não misturá-lo com um vírus - ferramenta de remoção .

    
por 20.12.2013 / 21:31
0

Normalmente, esse tipo de erro significa que você está perdendo uma dependência usada por php5apache2_4.dll , provavelmente introduzida no PHP 5.5.4.

Para verificar qual deles está faltando, use o Dependency Walker , que exibe as DLLs ausentes na cor vermelha. As DLLs ausentes marcadas como "carregamento atrasado" geralmente não são um problema.

Verifique se você não tem uma incompatibilidade de 32 bits / 64 bits. Como tudo está em C:/Program Files , suponho que todo o software seja de 64 bits. Nesse caso, use também a versão de 64 bits do Dependency Walker.

    
por 17.12.2013 / 16:58