Código de erro 60 do PHP cURL


85

Enquanto tento configurar um ambiente php no Windows (usando wamp) para usar o Amazon PHP SDK, quando tento executar um teste de amostra, recebo o seguinte erro:

Fatal error: Uncaught exception 'cURL_Exception' with message 'cURL resource: Resource id #10; cURL error: SSL certificate problem: unable to get local issuer certificate (cURL error code 60). See http://curl.haxx.se/libcurl/c/libcurl-errors.html for an explanation of error codes.' in C:\wamp\www\AWSSDKforPHP\lib\requestcore\requestcore.class.php on line 848

Já adicionei a seguinte linha ao meu php.ini

curl.cainfo = C:\Windows\ca-bundle.crt

qual é a localização de um certificado que criei usando este script VBS VBS-Script

Eu reiniciei meu serviço WAMP também.

Referência de curva de índice PHP


6
Caso você não se importe com o processo de certificação, você pode desativá-lo completamente curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
— denispyr

Isso resolveu o problema para mim - stackoverflow.com/a/32095378/178163 Basicamente, pode haver 2 arquivos php.ini
— George Kagan

3
Para aqueles que se depararam com esse problema pela primeira vez, como eu, o motivo por trás disso, pelo que eu entendo (corrija-me se eu estiver errado), é que, ao contrário da situação de uma conexão HTTPS por meio de um navegador, uma solicitação CURL não obtém o certificado do servidor. Portanto, precisamos baixar manualmente o certificado do site e adicioná-lo ao PHP ini. Esta verificação do certificado no final do cliente faz parte do processo de conexão HTTPS e, ao que parece, pode ser contornada. É aqui que curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);entra em cena.
— Sandeepan Nath

funcionou como um encanto !!!! obrigado!
— Rodrigo Serzedello

Respostas:


226

Use este pacote de certificado raiz de certificado:

https://curl.haxx.se/ca/cacert.pem

Copie este pacote de certificado em seu disco. E usar isso emphp.ini

curl.cainfo = "path_to_cert\cacert.pem"

10
E caso isso não resolva o problema? Eu defini curl_setopt($ch, CURLOPT_CAINFO, ini_get('curl.cainfo'));e no php.ini [cURL] curl.cainfo = C:\dev\xampp\php\cacert.pem . O arquivo está lá, mas ainda recebo o erro 60. Há algo que estou faltando?
— Estouro de

3
@Overflowh existem dois tipos de php.ini: Um para php-cli segundo para php-web (apache, nginx, ...). Você precisa definir um curl.cainfo = "path_to_cert\cacert.pem"para web. Por outro lado, se você pode ver que curl.cainfoé verdade em sua visualização de informações do php, talvez haja um problema de permissão.
— Hüseyin BABAL

Bem, na verdade eu não consigo ver curl.cainfominhas informações de php. Isso significa que coloquei o valor no arquivo errado?
— Overflowh

1
Sim, verifique novamente a localização do arquivo php.ini. Você precisa colocar isso na versão web
— Hüseyin BABAL

Eu adicionei no apache php.ini, mas isso não funcionou
— kasim badami

31

eu consertei isso modificando o php.iniarquivo emC:\wamp\bin\apache\apache2.4.9\bin\

curl.cainfo = "C:/wamp/bin/php/php5.5.12/cacert.pem"

primeiro eu estava tentando modificar o php.iniarquivo em C:\wamp\bin\php\php5.5.12\e não funcionou.

espero que isso ajude alguém que está procurando o direito php.inide modificar


1
Obrigado. Bastou baixar o arquivo curl.haxx.se/ca/cacert.pem e definir o caminho para ele no arquivo apache php.ini como você disse. Por favor, estejam atentos, pessoal, você pode colocar o cacert onde quiser, apenas certifique-se de colocar o caminho corretamente. Além disso, certifique-se de remover o ponto-e-vírgula!
— Dan Zuzevich

1
Não se esqueça de recarregar o apache depois disso.
— hcker2000

17
php --ini

Isso lhe dirá exatamente qual arquivo php.ini está sendo carregado, para que você saiba qual modificar. Perdi muito tempo alterando o arquivo php.ini errado porque eu tinha WAMP e XAMPP instalados.

Além disso, não se esqueça de reiniciar o servidor WAMP (ou o que você usar) após alterar o php.ini.


1
salva-vidas! 3 dias de solução de problemas e esse é o problema
— suo

13

@Overflowh Tentei a resposta acima também sem sorte. Mudei a versão do php de 5.3.24 para 5.5.8, pois esta configuração só funciona no php 5.3.7 e superior. Então, encontrei este http://flwebsites.biz/posts/how-fix-curl-error-60-ssl-issue . Baixei o cacert.pem de lá e substituí aquele que baixei / fiz em curl.hxxx.se ligado acima e tudo começou a funcionar. Eu estava tentando fazer o paypal sandbox IPN verificar. Fico feliz em dizer que após a troca de .pem tudo está ok usando a configuração curl.cainfo no php.ini que ainda não estava no 5.3.24.


2
Eu estava enfrentando o mesmo problema e resolvi apenas baixando o formulário de arquivo .pem mencionado acima. Obrigado
— saqibahmad de

4
Haha Eu não posso acreditar nisso! Eu possuo o FLWebsites.biz e encontrei este post sem saber que fui mencionado ... Escrevi esse blog!
— HTMLGuy

Tenho tentado descobrir o problema e, depois de 3-4 horas, finalmente descobri esta resposta. Eu disse oh bem, por que não tentar outro arquivo pem novamente. E surpresa: finalmente funcionou. Obrigado por encontrar esse blog :)
— Sauleil

Isso resolveu meu problema cacert.pem no Windows 10, IIS. Obrigado.
— jacouh

3
Desculpe, tirei meu site do ar. Vá diretamente para a fonte: curl.haxx.se/docs/caextract.html
— HTMLGuy


5

Primeiro, precisamos baixar este pacote de certificado raiz de certificado:

https://curl.haxx.se/ca/cacert.pem

Mova este arquivo para algum lugar como a pasta PHP na pasta Wamp / Xampp.

Em seguida, edite o seu "php.ini":

curl.cainfo = "C: /path/to/your/cacert.pem"

e

openssl.cafile = "C: /path/to/your/cacert.pem"

IMPORTANTE:

Certifique-se de abrir o arquivo "php.ini" diretamente no Windows Explorer. (no meu caso: “C: \ DevPrograms \ wamp64 \ bin \ php \ php5.6.25 \ php.ini”).

Não use o atalho para "php.ini" no menu do ícone Wamp / Xampp na bandeja do sistema. Este atalho não funcionou em alguns casos que enfrentei.

Depois de salvar "php.ini", você não precisa "Reiniciar Todos os Serviços" no ícone Wamp ou fechar / reabrir o CMD.

Tente com "var_dump (openssl_get_cert_locations ());" e observe a linha: ["ini_cafile"] => string (40) "C: /path/to/your/cacert.pem"

Feito.


Sua nota sobre a abertura do arquivo php.ini através do explorer realmente funcionou! E finalmente descobri que o ícone php.ini do wamp tem um caminho diferente. Obrigado!!!
— Doctiger

4

A solução mais fácil para o problema é adicionar o comando abaixo no campo.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

Usando isso, não será necessário adicionar nenhum certificado ou nada.



2

Adicione o seguinte ao php.ini [use '/' em vez de '\' no caminho] curl.cainfo = "path / cacert.pem"

Reiniciei meu XAMPP. Funcionou bem para mim. obrigado



1

Primeiro você tem que baixar o certificado deste link

https://curl.haxx.se/ca/cacert.pem

e colocá-lo em um local que você deseja que o nome do arquivo para download seja: cacert.pem Portanto, no meu caso, vou colocá-lo em C: \ wamp64 \ bin \ php \ cacert.pem

Então você deve especificar a localização do arquivo php.ini

Por exemplo, estou usando php 7, o arquivo php.ini está localizado em: C: \ wamp64 \ bin \ php \ php7.0.10 \ php.ini

Portanto, acesse esse arquivo e descomprima esta linha; openssl.cafile

também atualize-o para ficar parecido com este openssl.cafile = "C: \ wamp64 \ bin \ php \ cacert.pem"

Finalmente reinicie seu servidor apache e isso é tudo


1

IMPORTANTE : após 4 horas, trabalhar com laravel 5.7 e php 7. + e executar / usar php artison servir em localhost tentando conectar-se ao mailgun.

IMPORTANTE para resolver o problema não funcione com ip http://127.0.0.1:8000 use localhost ou defina o nome de domínio pelo arquivo host

Está bem ,


0

A solução é editar o arquivo php.ini localizado na sua versão php (para mim é php7.0.10) e não o php.ini do apache. Você encontrará um arquivo comentado como este; curl.cainfo Basta alterar esta linha como curl.cainfo = "C: \ permCertificate \ cacert.pem"

Não se esqueça de criar o diretório "permCertificate" e copiar o arquivo "cacert.pem" dentro dele.


Funciona para mim em Ampps, Obrigado
— Alejandro Aranda

-1

Só para você saber o que funcionou para mim, o arquivo em https://curl.haxx.se/ca/cacert .... não funcionou, entretanto, o da pasta zip no post em ( http: // flwebsites .biz / posts / how-fix-curl-error-60-ssl-issue ) funcionou para mim sem problemas.

Como já foi dito, copie o arquivo do certificado para um local em seu disco rígido, atualize a linha

;curl.cainfo 

em seu arquivo php.ini para ler

curl.cainfo= "path_to_cert\cacert.pem"

Reinicie seu servidor Apache.


O site vinculado é spam.
— Rick Kukiela
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.