Problema do Apache e do PHP Curl

1

No meu apache error.log eu tenho a seguinte linha: Aviso do PHP: Inicialização do PHP: Não é possível carregar a biblioteca dinâmica 'ext \ php_curl.dll' - O procedimento especificado não pôde ser encontrado. \ R \ n em Desconhecido na linha 0

No entanto, verifiquei minha variável PATH e o diretório PHP está listado, a pasta ext está definida corretamente e php_curl.dll existe na pasta.

Eu reinstalei as redistribuições do vc ++ para garantir que não haja problemas.

Durante minha verificação, descobri que todos os ddl's a seguir estão presentes ao serem abertos a partir da execução (para testar, eles podem ser encontrados a partir da variável PATH):

  • ws2_32.dll
  • wldap32.dll
  • php7ts.dll
  • libeay32.dll
  • libssh2.dll
  • nghttp2.dll
  • ssleay32.dll
  • normaliz.dll
  • kernel32.dll
  • vcruntime140.dll
  • api-ms-win-crt-stdio-l1-1-0.dll
  • api-ms-win-crt-string-l1-1-0.dll
  • api-ms-win-crt-heap-l1-1-0.dll
  • api-ms-win-crt-converter-l1-1-0.dll
  • api-ms-win-crt-filesystem-l1-1-0.dll
  • api-ms-win-crt-runtime-l1-1-0.dll
  • api-ms-win-crt-utilitário-l1-1-0.dll
  • api-ms-win-crt-time-l1-1-0.dll
  • api-ms-win-crt-ambiente-l1-1-0.dll

Eu não tenho certeza sobre quais dependências o php_curl poderia ter, se você pudesse dar sugestões, isso seria muito apreciado.

Mais informações do sistema: Compilador MSVC14 (Visual C ++ 2015)
Arquitetura x64
Windows 7 plataforma
Versão do PHP 7.1.4
Apache versão 2.4

    
por Jim 19.04.2017 / 22:42

2 respostas

1

Eu tive o mesmo problema, mas isso só se manifestou ao executar o PHP através do Apache. Na CLI, tudo bem - o cURL foi mostrado em phpinfo() .

A solução foi substituir vários arquivos no diretório bin do Apache:

  • libeay32.dll
  • ssleay32.dll
  • libssh2.dll
  • nghttp2.dll

Quando o PHP é executado através do Apache, seu diretório bin provavelmente tem precedência sobre o sistema %PATH% variable e, portanto, a extensão curl do PHP usa bibliotecas do Apache, resultando em incompatibilidade de versão (as bibliotecas do Apache parecem ser mais antigas que o requerido). / p>

Deve-se notar também que esse comportamento começou (afaik) com o PHP 7.1.

    
por 31.10.2017 / 12:59
0

Depois de fazer a cópia dll acima, certifique-se de ter as linhas abaixo em seu php.ini, e que o arquivo perm está lá. Não esqueça de colocar seus caminhos.

[curl] curl.cainfo="C: \ php \ extras \ ssl \ cacert.pem"

[openssl] openssl.cafile="C: \ php \ extras \ ssl \ cacert.pem" openssl.capath="C: \ php \ extras \ ssl \ cacert.pem"

    
por 09.08.2018 / 22:08