Saya menjalankan PHP Versi 5.6.3 sebagai bagian dari XAMPP pada Windows 7.
Ketika saya mencoba menggunakan Mandrill API, saya mendapatkan kesalahan berikut:
Pengecualian 'Mandrill_HttpError' dengan pesan 'API panggilan ke pesan / templat gagal': masalah sertifikat SSL: tidak bisa mendapatkan sertifikat penerbit lokal '
Saya sudah mencoba semua yang saya baca di StackOverflow, termasuk menambahkan yang berikut ke file php.ini:
curl.cainfo = "C:\xampp\php\cacert.pem"
Dan tentu saja diunduh ke lokasi itu file cacert.pem dari http://curl.haxx.se/docs/caextract.html
tetapi setelah semua itu, restart XAMPP dan server Apache tetapi masih mendapatkan kesalahan yang sama.
Saya benar-benar tidak tahu harus mencoba apa lagi.
Adakah yang bisa menyarankan apa lagi yang bisa saya coba?
Jawaban:
Akhirnya berhasil!
Unduh bundel sertifikat .
Letakkan di suatu tempat. Dalam kasus saya, itu adalah
c:\wamp\
direktori (jika Anda menggunakan Wamp 64 bit maka ituc:\wamp64\
).Aktifkan
mod_ssl
di Apache danphp_openssl.dll
diphp.ini
(batalkan komentar dengan menghapus;
di awal). Tapi hati-hati, masalah saya adalah saya memiliki duaphp.ini
file dan saya perlu melakukan ini di keduanya. Salah satunya adalah yang Anda dapatkan dari ikon bilah tugas WAMP, dan yang lain, dalam kasus saya, diC:\wamp\bin\php\php5.5.12\
Tambahkan baris ini ke sertifikat Anda di kedua
php.ini
file:Mulai ulang layanan Wamp.
sumber
;
di dan saya butuh waktu berjam-jam untuk menyadari bahwa itu berarti sebuah komentar. jadi untuk noobs seperti saya, orang perlu menghapus;
jugaBut 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\
Saya memiliki masalah yang sama dalam file Mandrill.php setelah nomor baris 65 di mana ia mengatakan $ this-> ch = curl_init ();
Tambahkan dua baris berikut:
Ini menyelesaikan masalah saya dan juga mengirim email menggunakan localhost tetapi saya sarankan untuk TIDAK menggunakannya pada versi live. Di server langsung Anda, kode harus berfungsi tanpa kode ini.
sumber
CURLOPT_SSL_VERIFYPEER
untukfalse
bekerja.Terima kasih @Mladen Janjetovic,
Saran Anda berhasil bagi saya di mac dengan ampps diinstal.
Disalin: http://curl.haxx.se/ca/cacert.pem
Untuk:
/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem
Dan diperbarui
php.ini
dengan jalur itu dan restart Apache:Dan menerapkan pengaturan yang sama di instalasi windows AMPPS dan bekerja dengan baik di dalamnya.
: Sama untuk wamp.
Jika Anda mencari untuk menghasilkan sertifikat SSL baru menggunakan SAN untuk localhost, langkah-langkah pada posting ini berfungsi untuk saya
Centos 7 / Vagrant / Chrome Browser
.sumber
Saat Anda melihat halaman http://curl.haxx.se/docs/caextract.html , Anda akan melihat dalam huruf besar sebuah bagian bernama:
Baca, lalu unduh versi sertifikat yang menyertakan sertifikat 'RSA-1024'. https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt
Itu akan bekerja dengan Mandrill.
Menonaktifkan SSL adalah ide yang buruk.
sumber
Langkah-langkah di atas, meskipun membantu, tidak bekerja untuk saya di Windows 8. Saya tidak tahu hubungan-hubungannya, tetapi langkah-langkah di bawah ini berhasil. Pada dasarnya perubahan dalam file cacert.pem. Semoga ini bisa membantu seseorang.
sumber
Saya menemukan Solusi baru tanpa sertifikasi yang diperlukan untuk memanggil ikal hanya menambahkan dua kode baris.
sumber
Jika Anda tidak memiliki akses ke php.ini , menambahkan kode ini (setelah
$ch = curl_init();
baris Anda ) berfungsi untuk saya:Kemudian, Anda hanya perlu mengunduh ca-bundle.crt dan menyimpannya ke lokasi yang Anda tentukan
$certificate_location
.sumber
Saya punya Solusi Sangat Sederhana untuk masalah ini. Anda dapat melakukan ini tanpa file sertifikat apa pun ..
Buka Laravel Root Folder -> Vender -> guzzlehttp -> guzzle -> src
buka Client.php
temukan $ default Array. yang terlihat seperti ini ..
Sekarang pekerjaan utama adalah mengubah nilai kunci verifikasi ..
Jadi Setelah ini tidak akan memeriksa Sertifikat SSL untuk Permintaan CURL ... Solusi ini berfungsi untuk saya. Saya menemukan solusi ini setelah banyak penelitian ...
sumber
menguraikan jawaban di atas untuk penyebaran server.
harus melakukan trik untuk lingkungan pengembangan tanpa membahayakan server saat digunakan.
sumber
Saya mencoba ini berhasil
Buka
dan ubah ini
untuk ini
sumber
Saya memiliki masalah yang sama saat membangun aplikasi di AppVeyor.
c:\php
echo extension=php_openssl.dll >> c:\php\php.ini
echo curl.cainfo=c:\php\cacert.pem >> c:\php\php.ini
sumber
Jika tidak ada solusi di atas yang berfungsi untuk Anda coba perbarui instalasi XAMPP Anda ke versi yang lebih baru.
Saya menjalankan XAMPP dengan php 5.5.11, kode persis yang sama tidak berfungsi, saya memutakhirkan ke XAMPP dengan php 5.6.28 dan solusi di atas bekerja.
Selain itu, hanya memperbarui PHP tidak berfungsi, sepertinya kombinasi pengaturan apache dan php pada versi XAMPP tersebut.
Semoga ini bisa membantu seseorang.
sumber
Saya mendapat kesalahan seperti:
Saya menggunakan mesin windows. Jadi saya mengikuti langkah-langkah di bawah ini.
Semoga bisa membantu seseorang
sumber
Saya menghadapi masalah seperti ini di sistem lokal saya tetapi tidak di server langsung. Saya juga menyebutkan solusi lain pada halaman ini sebelumnya, tetapi itu tidak bekerja di localhost . Jadi, temukan solusi baru untuk ini, yaitu bekerja di Server localhost-WAMP .
terkadang sistem tidak dapat menemukan cacert.pem Anda di drive Anda. jadi Anda bisa mendefinisikan ini dalam kode Anda di mana Anda akan menggunakan CURL
periksa kode CURL ini .
tetapi solusi ini mungkin tidak berfungsi di server langsung. karena jalur absolut dari cacert.pem
sumber
Saya punya solusi yang tepat untuk masalah ini, mari kita coba dan memahami akar penyebab masalah ini. Masalah ini muncul ketika server jauh ssl tidak dapat diverifikasi menggunakan sertifikat root di toko sertifikat sistem Anda atau ssl jarak jauh tidak diinstal bersama dengan sertifikat berantai. Jika Anda memiliki sistem linux dengan akses ssh root, maka dalam hal ini Anda dapat mencoba memperbarui toko sertifikat Anda dengan perintah di bawah ini:
update-ca-certificates
Jika masih, itu tidak berfungsi maka Anda perlu menambahkan root dan sertifikat sementara server jarak jauh di toko sertifikat Anda. Anda dapat mengunduh sertifikat root dan perantara dan menambahkannya di direktori / usr / local / share / ca-sertifikat dan kemudian jalankan perintah
update-ca-certificates
. Ini harus melakukan trik. Demikian pula untuk windows Anda dapat mencari cara menambahkan root dan sertifikat menengah.Cara lain Anda dapat mengatasi masalah ini adalah dengan meminta tim server jarak jauh untuk menambahkan sertifikat ssl sebagai kumpulan sertifikat root domain, sertifikat menengah dan sertifikat root.
sumber
untuk membuang waktu Anda dapat mencoba ini:
diuji pada guzzle / guzzle 3. *
sumber