Próbowałem uzyskać dostęp do tej konkretnej usługi REST ze strony PHP, którą utworzyłem na naszym serwerze. Zawęziłem problem do tych dwóch linii. Moja strona PHP wygląda tak:
<?php
$response = file_get_contents("https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json");
echo $response; ?>
Strona umiera w wierszu 2 z następującymi błędami:
- Ostrzeżenie: file_get_contents (): Operacja SSL nie powiodła się z kodem 1. OpenSSL Komunikaty o błędach: błąd: 14090086: Procedury SSL: SSL3_GET_SERVER_CERTIFICATE: weryfikacja certyfikatu nie powiodła się ... php w linii 2
- Ostrzeżenie: file_get_contents (): Nie można włączyć szyfrowania w ... php w linii 2
- Ostrzeżenie: file_get_contents (
https://maps.co.weber.ut.us/arcgis/rest/services/SDE_composite_locator/GeocodeServer/findAddressCandidates?Street=&SingleLine=3042+N+1050+W&outFields=*&outSR=102100&searchExtent=&f=json
): nie można otworzyć strumienia: operacja nie powiodła się w ... php w linii 2
Używamy serwera Gentoo. Niedawno zaktualizowaliśmy do wersji PHP 5.6. Ten problem pojawił się po aktualizacji.
Znalazłem, kiedy zastępuję usługę REST adresem takim jak https://www.google.com
; moja strona działa dobrze.
We wcześniejszej próbie ustawiłem “verify_peer”=>false
i przekazałem to jako argument do file_get_contents, jak opisano tutaj: file_get_contents ignorując Verify_peer => false? Ale jak zauważył pisarz; to nie miało znaczenia.
Zapytałem jednego z naszych administratorów serwerów, czy istnieją następujące wiersze w naszym pliku php.ini:
- rozszerzenie = php_openssl.dll
- allow_url_fopen = Wł
Powiedział mi, że skoro jesteśmy na Gentoo, openssl jest kompilowany podczas kompilacji; i nie jest ustawiony w pliku php.ini.
Potwierdziłem również, że allow_url_fopen
działa. Ze względu na specjalistyczny charakter tego problemu; Nie znajduję wielu informacji o pomocy. Czy ktoś z was spotkał coś takiego? Dzięki.