Я пытаюсь получить доступ к этой конкретной службе REST с PHP-страницы Ive, созданной на нашем сервере. Я сузил проблему до этих двух строк. Итак, моя страница 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 on строка 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? как отметил писатель; это не имело никакого значения.
Ive спросил одного из наших администраторов серверов, существуют ли эти строки в нашем файле php.ini:
- расширение = php_openssl.dll
- allow_url_fopen = On
Он сказал мне, что с тех пор, как они были на Gentoo, openssl скомпилируется, когда мы создаем; и его не задано в файле php.ini.
Я также подтвердил, что работает allow_url_fopen
. В связи с особым характером этой проблемы; Я не нахожу много информации для помощи. Кто-нибудь из вас сталкивался с чем-то подобным? Благодарю.