Bug #78891 [Com]: Bug with CURL completely stopped working

From: Date: Sun, 01 Dec 2019 14:17:20 +0000
Subject: Bug #78891 [Com]: Bug with CURL completely stopped working
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-223984@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=78891&edit=1 ID: 78891 Comment by: gilperon at gmail dot com Reported by: gilperon at gmail dot com Summary: Bug with CURL completely stopped working Status: Feedback Type: Bug Package: Unknown/Other Function Operating System: all PHP Version: 7.2.25 Block user comment: N Private report: N New Comment: nikic@php.net I just woke up right now and went to try your code and suddenly this bug went away. I didnt make ANY update yesterday. I didnt do "yum update" and for some reason CURL came back to work! Then I tried adding the line of code - mysqli_connect("localhost","root","password") - above the CURL and then it crashed again. Which means that the bug that I reported a few days back came back to happen again. So now, CURL only does not work when opening the mysqli connection. Nikik I tried that 2 line of codes you asked me and the output follows below: CODE: <?php $conn = mysqli_connect("localhost","root","password"); $curl = curl_init(); $opts = array(); $opts[CURLOPT_URL] = "https://www.sitepor500.com.br"; $opts[CURLOPT_RETURNTRANSFER] = true; curl_setopt_array($curl,$opts); var_dump(curl_exec($curl)); var_dump(curl_errno($curl)) ?> OUTPUT bool(false) int(77) I investigated, and 77 means -> CURLE_SSL_CACERT_BADFILE. ALSO one even strange thing, if I replace $conn = mysqli_connect("localhost","root","password"); with just mysqli_connect("localhost","root","password"); The bug goes away and everything works! Hope this helps and if you want me to execute any other code, I am here to help! Previous Comments: ------------------------------------------------------------------------ [2019-12-01 12:25:32] nikic@php.net It's pretty weird that curl_error() doesn't report anything here. Just to double check, if you replace the "echo curl_exec($curl)" with "var_dump(curl_exec($curl))", do you get "bool(false)" or "string(0)"? And afterwards, does "var_dump(curl_errno($curl))" give "int(0)" as well? ------------------------------------------------------------------------ [2019-11-30 17:14:40] gilperon at gmail dot com One more note: using "echo curl_error($curl); " shows a blank string! So curl is not showing any error. ------------------------------------------------------------------------ [2019-11-30 17:10:48] gilperon at gmail dot com I just forgot to say that when I open my Centos terminal and execute the command below, everything works fine: curl https://www.sitepor500.com.br So, using curl directly from the terminal, works fine. Only using it with PHP is that gets buggy. ------------------------------------------------------------------------ [2019-11-30 17:06:48] gilperon at gmail dot com nikic@php.net thanks for your attention. I can easily reproduce this bug installing LAMP on a CENTOS 7 new server on Linode. Just fire a cloud server, install lamp with PHP using 7.2.25 and the bug happens. Using file_get_contents the bug does not happen. Only with CURL. Also, the CURL code that I provided you, does not return any error, just an empty string when the requested domain contains HTTPS protocol. There is no error reported at error_log of Apache! Regarding the version of the libcurl I executed the code "var_dump( curl_version() );" and I got this: array(9) { ["version_number"]=> int(466176) ["age"]=> int(3) ["features"]=> int(558781) ["ssl_version_number"]=> int(0) ["version"]=> string(6) "7.29.0" ["host"]=> string(23) "x86_64-redhat-linux-gnu" ["ssl_version"]=> string(8) "NSS/3.36" ["libz_version"]=> string(5) "1.2.7" ["protocols"]=> array(20) { [0]=> string(4) "dict" [1]=> string(4) "file" [2]=> string(3) "ftp" [3]=> string(4) "ftps" [4]=> string(6) "gopher" [5]=> string(4) "http" [6]=> string(5) "https" [7]=> string(4) "imap" [8]=> string(5) "imaps" [9]=> string(4) "ldap" [10]=> string(5) "ldaps" [11]=> string(4) "pop3" [12]=> string(5) "pop3s" [13]=> string(4) "rtsp" [14]=> string(3) "scp" [15]=> string(4) "sftp" [16]=> string(4) "smtp" [17]=> string(5) "smtps" [18]=> string(6) "telnet" [19]=> string(4) "tftp" } } ------------------------------------------------------------------------ [2019-11-30 13:09:13] nikic@php.net This issue is almost certainly not on the PHP side, but either due to a libcurl update (maybe you pulled one in together with a PHP update?) or a misconfiguration of the certificate store (most likely). The fact that this happens with just curl, that there have been no recent code changes (in PHP) in this area, and the issue is not reproducible by other people (I just tried your code, works just fine) is a pretty strong indication of that. To say more here, at the very least it would be important to know a) what error curl reports and b) what libcurl version you're using and whether it was updated recently. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=78891 -- Edit this bug report at https://bugs.php.net/bug.php?id=78891&edit=1

« previous php.bugs (#223984) next »