Composer'da curl error 60 while downloading https://repo.packagist.org/packages.json: SSL certificate problem: unable to get local issuer certificate mesajı, PHP'nin cURL/OpenSSL katmanının CA paketini bulamadığını veya zincire güvenmediğini gösterir. Windows'ta XAMPP gibi kurulumlarda çok yaygındır.
Olası nedenler
php.iniiçindecurl.cainfoveopenssl.cafiletanımlı değil ya da var olmayan bir dosyayı gösteriyor.- CA paketi (cacert.pem) çok eski.
- Kurumsal proxy TLS trafiğini kendi CA'sıyla yeniden imzalıyor.
- Sistem saati yanlış.
Çözüm adımları
- Kullandığınız php.ini dosyasını bulun:
php --ini - Güncel bir cacert.pem dosyasını curl.se'nin yayınladığı CA paketinden edinin ve sabit bir dizine koyun.
- php.ini içine yolları yazın:
curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
openssl.cafile = "C:\xampp\php\extras\ssl\cacert.pem"
- Komut satırı PHP'nin değişikliği okuduğunu doğrulayın:
php -i | findstr cainfo - Composer'ı yeniden çalıştırın:
composer diagnose
Kurumsal CA veya tek seferlik yol
Yalnızca Composer için CA dosyası tanımlamak isterseniz:
composer config --global cafile /etc/ssl/kurum-ca.pem
composer config --global capath /etc/ssl/certs
Linux'ta sistem paketini güncellemek (update-ca-certificates) çoğu zaman yeterlidir. Kurumsal CA'yı önce sistem deposuna eklemek, birden fazla aracı tek hamlede düzeltir.
Yapılmaması gereken
"disable-tls": true ayarı ve http:// depoya dönmek paketlerin ortadaki saldırgan tarafından değiştirilmesine izin verir. Bunu kalıcı çözüm saymayın.
Özet: Hata neredeyse her zaman eksik CA paketidir. Kendi sitenizde zincirin doğru yayınlandığını SSL Checker ile denetleyebilir, sertifika ihtiyacınız için SSL sertifikaları sayfasına bakabilirsiniz.