Jeg bruker WAMP i et lokalt utviklingsmiljø og prøver å belaste et kredittkort, men får feilmeldingen:
cURL error 60: SSL certificate problem: unable to get local issuer certificate (SSL-sertifikatproblem: kan ikke hente lokalt utstedersertifikat).
Jeg har søkt mye på Google, og mange foreslår at jeg laster ned denne filen: cacert.pem, legge den et sted og referere til den i php.ini. Dette er delen i php.ini:
curl.cainfo = "C:\Windows\cacert.pem"
Men selv etter å ha startet serveren på nytt flere ganger og endret banen, får jeg den samme feilmeldingen.
Jeg bruker WAMP fra Apache-modulene og har aktivert ssl_module. Og fra PGP-utvidelsene har jeg php_curl aktivert.
Fortsatt samme feilmelding. Hvorfor skjer dette?
Nå følger jeg denne løsningen: How to fix PHP CURL Error 60 SSL.
Som foreslår at jeg legger til disse linjene i cURL-alternativene mine:
curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, true);
Hvor legger jeg til alternativer i cURL? Tilsynelatende ikke via kommandolinjen, siden CLI ikke finner kommandoen "curl_setopt"
EDIT
Dette er koden jeg kjører:
public function chargeStripe()
{
$stripe = new Stripe;
$stripe = Stripe::make(env('STRIPE_PUBLIC_KEY'));
$charge = $stripe->charges()->create([
'amount' => 2900,
'customer' => Input::get('stripeEmail'),
'currency' => 'EUR',
]);
dd($charge);
// echo $charge[Input::get('stripeToken')];
return Redirect::route('step1');
}
Guzzle, som brukes av cartalyst/stripe, gjør følgende for å finne et riktig sertifikatarkiv å sjekke et serversertifikat mot:
openssl.cafile
er angitt i php.ini-filen.curl.cainfo
er angitt i php.ini-filen./etc/pki/tls/certs/ca-bundle.crt
eksisterer (Red Hat, CentOS, Fedora; leveres av pakken ca-certificates)./etc/ssl/certs/ca-certificates.crt
eksisterer (Ubuntu, Debian; leveres av ca-certificates-pakken)./usr/local/share/certs/ca-root-nss.crt
eksisterer (FreeBSD; leveres av ca_root_nss-pakken)./usr/local/etc/openssl/cert.pem
(OS X; levert av homebrew)C:\windows\system32\curl-ca-bundle.crt
eksisterer (Windows)C:\windows\curl-ca-bundle.crt
finnes (Windows)Du bør kontrollere at verdiene for de to første innstillingene er riktig definert ved å utføre en enkel test:
echo "openssl.cafile: ", ini_get('openssl.cafile'), "\n";
echo "curl.cainfo: ", ini_get('curl.cainfo'), "\n";
Alternativt kan du prøve å skrive filen til plasseringene angitt i #7 eller #8.
Siden du bruker Windows, tror jeg at baneseparatoren din er '\' (og '/' på Linux).
Prøv å bruke konstanten DIRECTORY_SEPARATOR
. Da blir koden din mer portabel.
Prøv å gjøre det:
curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cacert.pem');
EDIT: og skriv hele banen. Jeg hadde noen problemer med relative stier (kanskje curl kjøres fra en annen basiskatalog?).