У меня ошибка при использовании firebase php, которая является ошибкой cURL 35 - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь использовать php с firebase

после установки пакета «composer require kreait / firebase- php ^ 4.0»

и настраивая мою firebase

, он показывает мне эту ошибку:

Неустранимая ошибка: Uncaught GuzzleHttp \ Exception \ ConnectException: ошибка cURL 35: OpenSSL SSL_connect: SSL_ERROR_SYSCALL в связи с ff64t .firebaseio.com: 443 (см. https://curl.haxx.se/libcurl/c/libcurl-errors.html) в C: \ xampp \ htdocs \ dashboard \ webservice \ php_firebase \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ CurlFactory. php: 200 Трассировка стека: # 0 C: \ xampp \ htdocs \ dashboard \ webservice \ php_firebase \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ CurlFactory. php (155): GuzzleHttp \ Handler \ CurlFactory :: createRejection (Object (GuzzleHttp \ Handler \ EasyHandle), Array) # 1 C: \ xampp \ htdocs \ dashboard \ webservice \ php_firebase \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ CurlFactory. php (105): GuzzleHttp \ Handler \ CurlFactory :: finishError (Объект (GuzzleHttp \ Handler \ CurlHandler), Объект (GuzzleHttp \ Handler \ E asyHandle), Object (GuzzleHttp \ Handler \ CurlFactory)) # 2 C: \ xampp \ htdocs \ dashboard \ webservice \ php_firebase \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ CurlHandler. php (43): GuzzleHttp \ Handler \ CurlFactory :: fini sh (Object (GuzzleHttp \ Handler \ CurlHandler), Object (Guz in C: \ xampp \ htdocs \ dashboard \ webservice \ php_firebase \ vendor \ kreait \ firebase-php \ src \ Firebase \ Exception \ ApiException. php в строке 40

мой php код настолько прост:

 <?php
 require_once './vendor/autoload.php';
 use Kreait\Firebase\Factory;
     use Kreait\Firebase\ServiceAccount;
 $serviceAccount = ServiceAccount::fromJsonFile(__DIR__.'/secret/clone-7ef2-642f.json');
 $firebase = (new Factory)
    ->withServiceAccount($serviceAccount)
    //->withDatabaseUri("https://ff64t.firebaseio.com")
    ->create();
    $database = $firebase->getDatabase();
    $ref = $database->getReference('users');
    $res = $ref->getChild('1z7ni171Hwgq8fdnandRNjfxBfw2')->getChild('name')->getValue();
    var_dump($res);

?>

так что кто-нибудь сталкивался с чем-то подобным и как решить эту проблему

Я пробовал много решений, но ни одно из них не работает.

Я попытался переустановить завиток и поставить его как системную переменную. Я также попытался добавить

curl_setopt($easy->handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);

, чтобы сделать завиток с IPV4 ... это дало мне новую ошибку:

Неустранимая ошибка: Uncaught GuzzleHttp \ Exception \ RequestException: ошибка cURL 0: запрос cURL был повторен 3 раза и не увенчался успехом. Наиболее вероятная причина сбоя в том, что cURL не удалось перемотать тело запроса, и последующие попытки привели к той же ошибке. Включите параметр отладки, чтобы узнать, что пошло не так. См. https://bugs.php.net/bug.php?id=47204 для получения дополнительной информации. (см. https://curl.haxx.se/libcurl/c/libcurl-errors.html) в C: \ xampp \ htdocs \ dashboard \ webservice \ firebase_php \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ CurlFactory. php: 201 Трассировка стека: # 0 C: \ xampp \ htdocs \ dashboard \ webservice \ firebase_php \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ CurlFactory. php (537): GuzzleHttp \ Handler \ CurlFactory :: createRejection (Object (GuzzleHttple \ Handler \ EasyHandler ), Array) # 1 C: \ xampp \ htdocs \ dashboard \ webservice \ firebase_php \ vendor \ guzzlehttp \ guzzle \ src \ Handler \ CurlFactory. php (152): GuzzleHttp \ Handler \ CurlFactory :: retryFailedRewind (Object (GuzzleHttp \ Handler \ CurlHandler), Object (GuzzleHttp \ Handler \ EasyHandle), Array) # 2 C: \ xam в C: \ xampp \ htdocs \ dashboard \ webservice \ firebase_php \ vendor \ kreait \ firebase-php \ src \ Firebase \ Exception \ ApiException. php в строке 40

Я также проверил поддержку curl и ssl из phpinfo

1 Ответ

0 голосов
/ 28 мая 2020

Согласно странице руководства curl(1), код ошибки 35 - это сбой установления связи SSL:

EXIT CODES
  ...
  35     SSL connect error. The SSL handshaking failed.

Вы можете попробовать временно отключить проверку сертификата SSL, чтобы проверить, если это устраняет проблему.

curl_setopt($handle, CURLOPT_VERIFYPEER, 0); // ***JUST A TEST! DO __NOT__ PUSH THIS TO PRODUCTION!***

Если проблема устранена, причиной, вероятно, является одна из двух наиболее распространенных ошибок квитирования SSL:

  1. Отсутствующий сертификат CA на вашем хосте машина, а это означает, что cURL не смог проверить подлинность сертификата.
  2. Сертификат с истекшим сроком действия, представленный машиной, к которой вы подключаетесь.

Если это НЕ решает проблему, причина вероятно:

Ваш компьютер и удаленный компьютер не смогли согласовать набор шифров и / или версию SSL. Любое количество других ошибок SSL.
...