Curl не работает, когда соединение с базой данных активно - PullRequest
0 голосов
/ 21 ноября 2019

Я обнаружил очень серьезную и легко воспроизводимую проблему, возникающую с CURL в последней версии PHP 7.2.X (то есть 7.2.24).

Просто запустите приведенный ниже код на своем сервере с PHP + APACHE +МАРИАДБ:

<?php

$curl = curl_init();

$opts = array();

$opts[CURLOPT_URL] = "https://www.sitepor500.com.br";

curl_setopt_array($curl,$opts);

echo curl_exec($curl);

?>

Это будет работать просто отлично, я имею в виду, вы увидите содержимое страницы на CURLOPT_URL. Теперь просто добавьте к нему одну строчку кода, и ошибка произойдет:

<?php

$conn = mysqli_connect("localhost","root","your_password");

$curl = curl_init();

$opts = array();

$opts[CURLOPT_URL] = "https://www.sitepor500.com.br";

curl_setopt_array($curl,$opts);

echo curl_exec($curl);

?>

Невероятно, просто добавление соединения с локальной базой данных заставит CURL извлечь содержимое URL-адреса, указанного в CURLOPT_URL как ""(пустая строка). Это происходит с любым URL.

ПРИМЕЧАНИЕ. Сообщество PHP подтвердило, что это ошибка, и затрагивает все домены с SSL при попытке получить их содержимое с помощью CURL. Так я должен закрыть этот вопрос или удалить его?

1 Ответ

0 голосов
/ 21 ноября 2019

Эта проблема, о которой я сообщил здесь, выглядит как ошибка, специфичная для версии PHP, которую я сообщил - 7.2.24, - а также для версии 7.3.7. Эта ошибка связана с исправлением «openssl_encrypt_ccm.phpt терпит неудачу с OpenSSL 1.1.1c», опубликованным в журнале изменений. Они исправили что-то и сломали другое.

Эти 2 отчета об ошибках (один мой и другой от другого пользователя) показывают происходящую ошибку:

https://bugs.php.net/bug.php?id=78845 https://bugs.php.net/bug.php?id=78824

В моем случае эта ошибка возникает только при использовании SSL / HTTP с CURL. Если вы используете любой домен без SSL, он будет работать нормально. И вам также необходимо установить соединение с базой данных, прежде чем пытаться использовать CURL - если вы это сделаете, это вызовет ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...