Używam PHP w wersji 5.6.3 jako część XAMPP na Windows 7.
Kiedy próbuję użyć Mandrill API, pojawia się następujący błąd:
Nieprzechwycony wyjątek „Mandrill_HttpError” z komunikatem „Niepowodzenie wywołania interfejsu API do wiadomości / szablonu wysyłania: problem z certyfikatem SSL: nie można uzyskać certyfikatu lokalnego wystawcy”
Próbowałem już wszystkiego, co przeczytałem na StackOverflow, w tym dodając następujące informacje do pliku php.ini:
curl.cainfo = "C:\xampp\php\cacert.pem"
I oczywiście pobrany do tej lokalizacji plik cacert.pem z http://curl.haxx.se/docs/caextract.html
ale po tym wszystkim zrestartowałem XAMPP i serwer Apache, ale nadal pojawia się ten sam błąd.
Naprawdę nie wiem, co jeszcze spróbować.
Czy ktoś może doradzić, co jeszcze mogę spróbować?
Odpowiedzi:
Nareszcie mam to do pracy!
Pobierz pakiet certyfikatów .
Połóż to gdzieś. W moim przypadku był to
c:\wamp\
katalog (jeśli używasz Wampa 64-bitowego, to jestc:\wamp64\
).Włącz
mod_ssl
w Apache iphp_openssl.dll
wphp.ini
(odkomentuj je, usuwając;
na początku). Ale bądź ostrożny, moim problemem było to, że miałem dwaphp.ini
pliki i muszę to zrobić w obu z nich. Jedna to ta, którą otrzymujesz z ikony paska zadań WAMP, a druga, w moim przypadku, toC:\wamp\bin\php\php5.5.12\
Dodaj te wiersze do certyfikatu w obu
php.ini
plikach:Uruchom ponownie usługi Wamp.
źródło
;
na początku i zajęło mi godziny, zanim zrozumiałem, że to oznacza komentarz. tak dla noobs jak ja, trzeba usunąć;
, a takżeBut 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\
Miałem ten sam problem w pliku Mandrill.php po linii nr 65, gdzie napisano $ this-> ch = curl_init ();
Dodaj następujące dwie linie:
To rozwiązało mój problem i wysłało e-mail za pomocą localhost, ale sugeruję NIE używać go w wersji na żywo na żywo. Na serwerze na żywo kod powinien działać bez tego kodu.
źródło
CURLOPT_SSL_VERIFYPEER
dofalse
pracy.Dzięki @Mladen Janjetovic,
Twoja sugestia zadziałała dla mnie w systemie Mac z zainstalowanymi wzmacniaczami.
Skopiowano: http://curl.haxx.se/ca/cacert.pem
Do:
/Applications/AMPPS/extra/etc/openssl/certs/cacert.pem
Zaktualizowałem
php.ini
tę ścieżkę i zrestartowałem Apache:Zastosowałem to samo ustawienie w instalacji systemu Windows AMPPS i działało w nim również doskonale.
: To samo dla wampa.
Jeśli szukasz sposobu na wygenerowanie nowego certyfikatu SSL przy użyciu SAN dla localhost, kroki w tym poście działały dla mnie
Centos 7 / Vagrant / Chrome Browser
.źródło
Podczas przeglądania strony http://curl.haxx.se/docs/caextract.html zauważysz dużymi literami sekcję o nazwie:
Przeczytaj, a następnie pobierz wersję certyfikatów, która zawiera certyfikaty „RSA-1024”. https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt
Będą współpracować z Mandrillem.
Wyłączenie SSL to zły pomysł.
źródło
Powyższe kroki, chociaż pomocne, nie działały dla mnie w systemie Windows 8. Nie znam powiązania, ale poniższe kroki zadziałały. Zasadniczo zmiana w pliku cacert.pem. Mam nadzieję, że to komuś pomoże.
źródło
Znalazłem nowe rozwiązanie bez wymaganej certyfikacji, aby zawijać curl tylko dodać kod dwóch linii.
źródło
Jeśli nie masz dostępu do php.ini , dodanie tego kodu (po
$ch = curl_init();
linii) działa dla mnie:Następnie wystarczy pobrać plik ca-bundle.crt i zapisać go w lokalizacji określonej w
$certificate_location
.źródło
Mam bardzo proste rozwiązanie tego problemu. Możesz to zrobić bez pliku certyfikatu.
Idź na Laravel Root Folder -> Vender -> guzzlehttp -> guzzle -> src
otwórz Client.php
znajdź $ defaults Array. tak to wygląda…
Teraz głównym zadaniem jest zmiana wartości klucza weryfikacyjnego .
Więc po tym nie sprawdzi certyfikatu SSL dla żądania CURL ... To rozwiązanie działa dla mnie. Znalazłem to rozwiązanie po wielu badaniach ...
źródło
opracowanie powyższych odpowiedzi na wdrożenie serwera.
powinien wykonać sztuczkę w środowisku programistycznym bez narażania serwera na wdrożenie.
źródło
Próbowałem, to działa
otwarty
i zmień to
do tego
źródło
Miałem ten sam problem podczas tworzenia mojej aplikacji w AppVeyor.
c:\php
echo extension=php_openssl.dll >> c:\php\php.ini
echo curl.cainfo=c:\php\cacert.pem >> c:\php\php.ini
źródło
Jeśli żadne z powyższych rozwiązań nie działa, spróbuj zaktualizować instalację XAMPP do nowszej wersji.
Korzystałem z XAMPP z php 5.5.11, ten sam dokładny kod nie działał, zaktualizowałem do XAMPP z php 5.6.28 i powyższe rozwiązania działały.
Dodatkowo tylko aktualizacja PHP nie działała albo wydaje się kombinacją ustawień apache i php w tej wersji XAMPP.
Mam nadzieję, że to komuś pomoże.
źródło
Wystąpił błąd:
Używam komputera z systemem Windows. Więc wykonałem poniższe kroki.
Mam nadzieję, że to może komuś pomóc
źródło
Miałem taki problem w moim systemie lokalnym, ale nie na serwerze na żywo. Wspomniałem też o innym rozwiązaniu na tej stronie, ale nie działało to w localhost. Znajdź więc nowe rozwiązanie, które działa w localhost-WAMP Server .
czasami system nie może znaleźć pliku cacert.pem na dysku. więc możesz zdefiniować to w swoim kodzie, w którym będziesz używać CURL
sprawdź ten kod CURL .
ale to rozwiązanie może nie działać na serwerze na żywo. z powodu bezwzględnej ścieżki cacert.pem
źródło
Mam właściwe rozwiązanie tego problemu, spróbujmy zrozumieć podstawową przyczynę tego problemu. Ten problem występuje, gdy nie można zweryfikować zdalnych serwerów ssl przy użyciu certyfikatów głównych w magazynie certyfikatów systemu lub zdalny ssl nie jest zainstalowany razem z certyfikatami łańcuchowymi. Jeśli masz system Linux z dostępem root ssh, w takim przypadku możesz spróbować zaktualizować bazę certyfikatów za pomocą poniższego polecenia:
update-ca-certificates
Jeśli nadal nie działa, musisz dodać główny i tymczasowy certyfikat zdalnego serwera w swoim magazynie certyfikatów. Możesz pobrać certyfikaty root i pośrednie i dodać je do katalogu / usr / local / share / ca-certyfikaty, a następnie uruchomić polecenie
update-ca-certificates
. To powinno załatwić sprawę. Podobnie w przypadku systemu Windows możesz wyszukać sposób dodawania certyfikatu root i pośredniego.Innym sposobem rozwiązania tego problemu jest poproszenie zdalnego zespołu serwerów o dodanie certyfikatu ssl jako pakietu certyfikatu głównego domeny, certyfikatu pośredniego i certyfikatu głównego.
źródło
jeśli chcesz, możesz spróbować:
testowany na guzzle / guzzle 3. *
źródło