Estou executando o PHP versão 5.6.3 como parte do XAMPP no Windows 7.
Quando tento usar a API Mandrill, estou recebendo o seguinte erro:
Exceção não capturada 'Mandrill_HttpError' com a mensagem 'Falha na chamada da API / modelo de envio: Problema no certificado SSL: não é possível obter o certificado do emissor local'
Eu já tentei tudo o que li no StackOverflow, incluindo a adição do seguinte ao arquivo php.ini:
curl.cainfo = "C:\xampp\php\cacert.pem"
E, é claro, baixou para esse local o arquivo cacert.pem em http://curl.haxx.se/docs/caextract.html
mas depois de tudo isso, reiniciei o servidor XAMPP e Apache, mas continuando recebendo o mesmo erro.
Realmente não sei mais o que tentar.
Alguém pode aconselhar sobre o que mais posso tentar?
Respostas:
Finalmente consegui que isso funcionasse!
Faça o download do pacote de certificados .
Coloque em algum lugar. No meu caso, esse foi o
c:\wamp\
diretório (se você estiver usando o Wamp de 64 bits, serác:\wamp64\
).Ative
mod_ssl
no Apache ephp_openssl.dll
nophp.ini
(remova;
o comentário removendo -o no início). Mas tenha cuidado, meu problema era que eu tinha doisphp.ini
arquivos e preciso fazer isso nos dois. Um é o que você obtém do ícone da barra de tarefas do WAMP e outro é, no meu caso, emC:\wamp\bin\php\php5.5.12\
Adicione estas linhas ao seu certificado nos dois
php.ini
arquivos:Reinicie os serviços Wamp.
fonte
;
no início e levei horas para perceber que isso significa que é um comentário. assim para noobs como eu, é preciso remover o;
bemBut be careful, my problem was that I had two php.ini files and I need to do this in both of them. One is the one you get from your WAMP taskbar icon, and another one is, in my case, in C:\wamp\bin\php\php5.5.12\
Eu tive o mesmo problema no arquivo Mandrill.php após a linha número 65, onde diz $ this-> ch = curl_init ();
Adicione as seguintes duas linhas:
Isso resolveu o meu problema e também enviou e-mails usando o localhost, mas sugiro NÃO usá-lo na versão ao vivo. No seu servidor ativo, o código deve funcionar sem esse código.
fonte
CURLOPT_SSL_VERIFYPEER
parafalse
trabalhar.Obrigado @Mladen Janjetovic,
Sua sugestão funcionou para mim no mac com os ampps instalados.
Copiado: http://curl.haxx.se/ca/cacert.pem
Para:
/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem
E atualizado
php.ini
com esse caminho e reiniciei o Apache:E aplicou a mesma configuração na instalação do Windows AMPPS e também funcionou perfeitamente nela.
: O mesmo para o wamp.
Se você está procurando gerar um novo certificado SSL usando o SAN para localhost, as etapas nesta postagem funcionaram para mim
Centos 7 / Vagrant / Chrome Browser
.fonte
Ao visualizar a página http://curl.haxx.se/docs/caextract.html , você notará em grandes letras uma seção chamada:
Leia e faça o download da versão dos certificados que incluem os certificados 'RSA-1024'. https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt
Aqueles trabalharão com Mandrill.
Desabilitar o SSL é uma má ideia.
fonte
As etapas acima, apesar de úteis, não funcionaram para mim no Windows 8. Não conheço a correlação, mas as etapas abaixo funcionaram. Basicamente, uma alteração no arquivo cacert.pem. Espero que isso ajude alguém.
fonte
Encontrei uma nova solução sem a certificação necessária para chamar o curl e adicione apenas dois códigos de linha.
fonte
Se você não tem acesso ao php.ini , adicionar este código (após a sua
$ch = curl_init();
linha) funciona para mim:Em seguida, basta baixar o ca-bundle.crt e salvá-lo no local especificado em
$certificate_location
.fonte
Eu tenho uma solução muito simples deste problema. Você pode fazer isso sem nenhum arquivo de certificado.
Vá em Laravel Root Folder -> Vender -> guzzlehttp -> guzzle -> src
abra Client.php
encontre $ padrão Matriz. que se parecem assim ..
Agora, o trabalho principal é alterar o valor da chave de verificação .
Portanto, depois disso, ele não verificará o certificado SSL para solicitação de CURL ... Esta solução é útil para mim. Acho essa solução depois de muitas pesquisas ...
fonte
elaborando as respostas acima para implantação do servidor.
deve fazer o truque para o ambiente de desenvolvimento sem comprometer o servidor quando implantado.
fonte
Eu tentei isso funciona
abrir
e mude isso
para isso
fonte
Eu tive o mesmo problema durante a criação do meu aplicativo no AppVeyor.
c:\php
echo extension=php_openssl.dll >> c:\php\php.ini
echo curl.cainfo=c:\php\cacert.pem >> c:\php\php.ini
fonte
Se nenhuma das soluções acima estiver funcionando, tente atualizar a instalação do XAMPP para uma versão mais recente.
Eu estava executando o XAMPP com o php 5.5.11, o mesmo código exato não funcionou, atualizei para o XAMPP com o php 5.6.28 e as soluções acima funcionaram.
Além disso, apenas a atualização do PHP não funcionou parece uma combinação de configurações de apache e php nessa versão do XAMPP.
Espero que ajude alguém.
fonte
Eu recebi o erro como:
Eu estou usando a máquina windows. Então, eu segui os passos abaixo.
Espero que ajude alguém
fonte
Eu estava enfrentando um problema como esse no meu sistema local, mas não no servidor ativo. Eu também mencionei outra solução nesta página antes, mas que não estava funcionando no localhost .Então, encontre uma nova solução disso, que esteja funcionando no localhost-WAMP Server .
Às vezes, o sistema não conseguiu encontrar o seu cacert.pem na sua unidade. para que você possa definir isso no seu código em que usará CURL
verifique este código de CURL .
mas esta solução pode não funcionar no servidor ativo. por causa do caminho absoluto do cacert.pem
fonte
Eu tenho uma solução adequada para esse problema, vamos tentar entender a causa raiz desse problema. Esse problema ocorre quando os servidores remotos ssl não podem ser verificados usando certificados raiz no armazenamento de certificados do sistema ou o ssl remoto não está instalado junto com os certificados em cadeia. Se você possui um sistema linux com acesso root ssh, nesse caso, você pode tentar atualizar seu armazenamento de certificados com o comando abaixo:
update-ca-certificates
Se ainda assim, não funcionar, você precisará adicionar o certificado intermediário e raiz do servidor remoto em seu armazenamento de certificados. Você pode fazer o download de certificados raiz e intermediários, adicioná-los ao diretório / usr / local / share / ca-certificates e executar o comando
update-ca-certificates
. Isso deve fazer o truque. Da mesma forma, no Windows, você pode pesquisar como adicionar certificados raiz e intermediário.A outra maneira de resolver esse problema é solicitar à equipe de servidores remotos que adicione o certificado ssl como um pacote de certificação raiz do domínio, certificação intermediária e certificação raiz.
fonte
para guzzle, você pode tentar o seguinte:
testado no guzzle / guzzle 3. *
fonte