Yerel bir geliştirme ortamında WAMP kullanıyorum ve bir kredi kartından ücret almaya çalışıyorum ancak hata mesajı alıyorum:
cURL hatası 60: SSL sertifika sorunu: yerel sertifika vericisi sertifikası alınamıyor
Google'da çok aradım ve birçok kişi bu dosyayı indirmemi öneriyor: cacert.pem, bir yere koyun ve php.ini dosyamda referans gösterin. Bu benim php.ini dosyamdaki kısım:
curl.cainfo = "C:\Windows\cacert.pem"
Ancak, sunucumu birkaç kez yeniden başlattıktan ve yolu değiştirdikten sonra bile aynı hata mesajını alıyorum.
Apache Modüllerinden WAMP kullanıyorum ve ssl_modülünü etkinleştirdim. Ve PGP uzantılarından php_curl'ü etkinleştirdim.
Hala aynı hata mesajı. Bu neden oluyor?
Şimdi şu düzeltmeyi takip ediyorum: PHP CURL Hatası 60 SSL nasıl düzeltilir
Bu da şu satırları cURL seçeneklerime eklememi öneriyor:
curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, true);
cURL'ime seçenekleri nereden ekleyebilirim? Görünüşe göre komut satırından değil, çünkü CLI'm "curl_setopt" komutunu bulamıyor;
EDIT
Çalıştırdığım kod bu:
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');
}
cartalyst/stripe]1 tarafından kullanılan Guzzle, bir sunucu sertifikasını kontrol etmek için uygun bir sertifika arşivi bulmak için aşağıdakileri yapacaktır:
openssl.cafile
ayarının olup olmadığını kontrol edin.curl.cainfo
ayarının olup olmadığını kontrol edin.Basit bir test yaparak ilk iki ayarın değerlerinin doğru şekilde tanımlandığından emin olmak isteyeceksiniz:
echo "openssl.cafile: ", ini_get('openssl.cafile'), "\n";
echo "curl.cainfo: ", ini_get('curl.cainfo'), "\n";
Alternatif olarak, dosyayı #7 veya #8 ile belirtilen konumlara yazmayı deneyin.
Windows kullandığınıza göre, sanırım yol ayırıcınız '\' (ve Linux'ta '/'). DECTORY_SEPARATOR` sabitini kullanmayı deneyin. Kodunuz daha taşınabilir olacaktır.
Dene:
curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cacert.pem');
DÜZENLEME: ve tam yolu yazın. Göreceli yollarla ilgili bazı sorunlar yaşadım (belki de curl başka bir temel dizinden çalıştırılıyor?)