Я пытался получить доступ к этой конкретной службе REST со страницы PHP, которую я создал на нашем сервере. Я сузил проблему до этих двух строк. Итак, моя страница PHP выглядит так:
<?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; ?>
Страница умирает в строке 2 со следующими ошибками:
- Предупреждение: file_get_contents (): сбой операции SSL с кодом 1. Сообщения об ошибках OpenSSL: ошибка: 14090086: процедуры SSL: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата в ... php в строке 2
- Предупреждение: file_get_contents (): не удалось включить шифрование в ... php в строке 2
- Предупреждение: 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
): не удалось открыть поток: не удалось выполнить операцию ... php в строке 2
Мы используем сервер Gentoo. Недавно мы обновились до версии PHP 5.6. Именно после обновления появилась эта проблема.
Я обнаружил, когда я заменяю службу REST на адрес, подобный https://www.google.com
; моя страница работает просто отлично.
В более ранней попытке я установил “verify_peer”=>false
и передал это в качестве аргумента file_get_contents, как описано здесь: file_get_contents игнорируя verify_peer => false? Но, как заметил писатель; это не имело никакого значения.
Я спросил одного из наших администраторов сервера, существуют ли эти строки в нашем файле php.ini:
- расширение = php_openssl.dll
- allow_url_fopen = On
Он сказал мне, что, поскольку мы находимся на Gentoo, openssl компилируется при сборке; и это не установлено в файле php.ini.
Я также подтвердил, что allow_url_fopen
работает. В связи со спецификой этой проблемы; Я не нахожу много информации для помощи. Кто-нибудь из вас сталкивался с чем-то подобным? Спасибо.