PHP cURL hata kodu 60


85

Amazon PHP SDK'yı kullanmak için Windows'ta bir php ortamı kurmaya çalışırken (wamp kullanarak), örnek bir test çalıştırmayı denediğimde aşağıdaki hatayı alıyorum:

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

Aşağıdaki satırı php.ini dosyama zaten ekledim

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

Bu VBS komut dosyası VBS-Script'i kullanarak oluşturduğum sertifikanın konumu

WAMP hizmetimi de yeniden başlattım.

PHP dizini curl başvurusu


6
Sertifikasyon sürecini curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
önemsemiyorsanız

Bu benim için sorunu çözdü - stackoverflow.com/a/32095378/178163 Temelde 2 php.ini dosyası olabilir
George Kagan

3
Benim yaptığım gibi, bu konuyla ilk kez karşılaşanlar için bunun arkasındaki sebep, anladığım kadarıyla (yanılıyorsam beni düzeltin), tarayıcı üzerinden bir HTTPS bağlantısı durumundan farklı olarak, bir CURL isteğidir. sertifikayı sunucudan almıyor. Bu yüzden sitenin sertifikasını manuel olarak indirip PHP ini'ye eklememiz gerekiyor. İstemcinin sonundaki bu sertifika doğrulaması HTTPS bağlantı sürecinin bir parçasıdır ve görünüşe göre atlanabilir. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);Resmin içine girdiği yer burasıdır .
Sandeepan Nath

bir cazibe olarak çalıştı !!!! Teşekkürler!
Rodrigo Serzedello

Yanıtlar:


226

Bu sertifika kök sertifika paketini kullanın:

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

Bu sertifika paketini diskinize kopyalayın. Ve bunu kullanphp.ini

curl.cainfo = "path_to_cert\cacert.pem"

10
Ve bu sorunu çözmezse? Php.ini'yi kurdum curl_setopt($ch, CURLOPT_CAINFO, ini_get('curl.cainfo'));ve içinde . Dosya orada, ancak hala 60 hatasını alıyorum. Eksik bir şey mi var? [cURL] curl.cainfo = C:\dev\xampp\php\cacert.pem
Overflowh

3
@Overflowh iki tür vardır php.ini: Biri php-cli için saniye için php-web için (apache, nginx, ...). curl.cainfo = "path_to_cert\cacert.pem"Web bir için ayarlamanız gerekiyor . Öte yandan, curl.cainfophp bilgi görünümünüzde doğru olduğunu görüyorsanız , o zaman izin sorunu olabilir.
Hüseyin BABAL

Aslında curl.cainfophp bilgilerimde göremiyorum . Bu, değeri yanlış dosyaya koyduğum anlamına mı geliyor?
Overflowh

1
Evet, lütfen php.ini dosya konumunuzu iki kez kontrol edin. Bunu web versiyonuna koymanız gerekiyor
Hüseyin BABAL

Apache php.ini'ye ekledim, ancak bu işe yaramadı
kasim badami

31

bunu, php.inidosyayı değiştirerek düzelttimC:\wamp\bin\apache\apache2.4.9\bin\

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

önce php.inidosyasında değişiklik yaparak deniyordum C:\wamp\bin\php\php5.5.12\ve işe yaramadı.

umarım bu php.ini, değiştirme hakkını arayan birine yardımcı olur


1
Teşekkürler. Tek gereken, dosyayı curl.haxx.se/ca/cacert.pem'den indirmek ve dediğiniz gibi apache php.ini dosyasında ona giden yolu belirlemekti. Lütfen insanların farkında olun, cacert'i istediğiniz yere koyabilirsiniz, sadece yolu doğru yerleştirdiğinizden emin olun. Ayrıca noktalı virgülü kaldırdığınızdan emin olun!
Dan Zuzevich

1
Bundan sonra apache'yi yeniden yüklemeyi unutmayın.
hcker2000

17
php --ini

Bu size tam olarak hangi php.ini dosyasının yüklendiğini söyleyecektir, böylece hangisini değiştireceğinizi bilirsiniz. WAMP ve XAMPP kurulu olduğu için yanlış php.ini dosyasını değiştirerek çok zaman harcadım.

Ayrıca php.ini'yi değiştirdikten sonra WAMP sunucusunu (veya ne kullanırsanız kullanın) yeniden başlatmayı unutmayın.


1
hayat kurtarıcı! 3 lanet gün sorun giderme ve bu sorun çıkıyor
suo

13

@Overflowh Yukarıdaki cevabı da şanssız denedim. Php sürümünü 5.3.24'ten 5.5.8'e değiştirdim çünkü bu ayar sadece php 5.3.7 ve üzerinde çalışacak. Daha sonra bu http://flwebsites.biz/posts/how-fix-curl-error-60-ssl-issue buldum oradan cacert.pem'i indirdim ve curl.hxxx.se'den indirdiğim / yaptığımı değiştirdim yukarıda bağlantılı ve hepsi çalışmaya başladı. Doğrulamak için paypal korumalı alanı IPN'sini almaya çalışıyordum. .Pem takasından sonra yine de 5.3.24'te olmayan php.ini'deki curl.cainfo ayarını kullanarak her şeyin yolunda olduğunu söylemekten mutluluk duyuyoruz.


2
Aynı sorunla karşı karşıya kaldım ve yukarıda belirtilen .pem dosya formunu indirerek düzeltildim. Teşekkürler
saqibahmad

4
Haha buna inanamıyorum! FLWebsites.biz sahibiyim ve bu yazıya kendimden bahsedildiğinden tamamen habersiz geldim ... O blogu yazdım!
HTMLGuy

Sorunu anlamaya çalışıyorum ve 3-4 saat sonra nihayet bu cevabı buldum. Pekala dedim, neden tekrar başka bir pem dosyası denemiyorsunuz? Ve sürpriz: sonunda işe yaradı. Bu blogu bulduğunuz için teşekkürler :)
Sauleil

Bu, Windows 10, IIS altındaki cacert.pem sorunumu çözdü. Teşekkürler.
jacouh

3
Üzgünüm, sitemi kapattım. Doğrudan kaynağa gidin: curl.haxx.se/docs/caextract.html
HTMLGuy


5

Öncelikle, şu sertifika kök sertifika paketini indirmemiz gerekiyor:

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

Bu dosyayı Wamp / Xampp klasöründeki PHP klasörü gibi bir yere taşıyın.

Sonra "php.ini" dosyanızı düzenleyin:

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

ve

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

ÖNEMLİ:

"Php.ini" dosyasını doğrudan Pencere Gezgini ile açtığınızdan emin olun. (benim durumumda: "C: \ DevPrograms \ wamp64 \ bin \ php \ php5.6.25 \ php.ini").

Sistem Tepsisindeki Wamp / Xampp simgesinin menüsünde "php.ini" kısayolunu kullanmayın. Bu kısayol karşılaştığım bazı durumlarda işe yaramadı.

"Php.ini" yi kaydettikten sonra Wamp simgesinde "Tüm Hizmetleri Yeniden Başlat" ya da CMD'yi kapatıp / yeniden açmanız gerekmez.

"Var_dump (openssl_get_cert_locations ());" ile deneyin ve şu satıra bakın: ["ini_cafile"] => string (40) "C: /path/to/your/cacert.pem"

Bitti.


Php.ini dosyasını explorer aracılığıyla açma hakkındaki notunuz gerçekten işe yaradı! Ve sonunda wamp simgesinden php.ini'nin farklı bir yolu olduğunu anladım. Teşekkür ederim!!!
Doctiger

4

Sorunun en kolay çözümü, alana aşağıdaki komutu eklemektir.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

Bunu kullanmak herhangi bir sertifika veya herhangi bir şey eklemenize gerek kalmayacaktır.



2

Aşağıdakini php.ini'ye ekleyin [yolda '\' yerine '/' kullanın] curl.cainfo = "yol / cacert.pem"

XAMPP'mi yeniden başlattım. Benim için iyi çalıştı. Teşekkürler



1

Öncelikle sertifikayı bu bağlantıdan indirmelisiniz

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

ve indirilebilir dosyanın adını istediğiniz bir yere koyun: cacert.pem Yani benim durumumda onu C: \ wamp64 \ bin \ php \ cacert.pem altına koyacağım

Daha sonra php.ini dosyasının konumunu belirtmelisiniz

Örneğin, php 7 kullanıyorum php.ini dosyası şu konumda bulunuyor: C: \ wamp64 \ bin \ php \ php7.0.10 \ php.ini

Yani bu dosyaya erişin ve bu satırı uncommit edin; openssl.cafile

ayrıca bunu openssl.cafile = "C: \ wamp64 \ bin \ php \ cacert.pem" gibi görünecek şekilde güncelleyin

Sonunda apache sunucunuzu yeniden başlatın ve hepsi bu


1

ÖNEMLİ : 4 saat sonra, laravel 5.7 ve php 7. + ile çalışın ve mailgun'a bağlanmaya çalışırken localhost üzerinde php artison hizmetini çalıştırın / kullanın.

Çözmek için ÖNEMLİ ip ile çalışmaz http://127.0.0.1:8000 localhost kullanın veya etki alanı adını ana bilgisayar dosyasına göre ayarlayın

tamam ,


0

Çözüm, apache'nin php.ini'sini değil, php sürümünüzde bulunan php.ini dosyasını (benim için php7.0.10) düzenlemektir. Bunun gibi yorumlanmış bir dosya bulacaksınız; curl.cainfo Bu satırı şu şekilde değiştirin curl.cainfo = "C: \ permCertificate \ cacert.pem"

"PermCertificate" dizinini oluşturmayı ve içindeki "cacert.pem" dosyasını kopyalamayı unutmayın.


Benim için Ampps'de çalışıyor, Teşekkürler
Alejandro Aranda

-1

Benim için neyin işe yaradığını bildiğiniz için, https://curl.haxx.se/ca/cacert .... adresindeki dosya çalışmadı, ancak ( http: // flwebsites adresindeki gönderideki zip klasöründeki dosya) .biz / posts / how-fix-curl-error-60-ssl-issue ) benim için hiç sorun yaşamadan çalıştı.

Diğerlerinin dediği gibi, sertifika dosyasını sabit sürücünüzdeki bir konuma kopyalayın, satırı güncelleyin

;curl.cainfo 

php.ini dosyanızda okumak için

curl.cainfo= "path_to_cert\cacert.pem"

Apache sunucunuzu yeniden başlatın.


Bağlantılı web sitesi spam içeriklidir.
Rick Kukiela
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.