I dont understand when I echo $httpCode I always get 0, I was expecting 404 when I change $html_brand into a broken url. Is there anything that I miss or do not know of? Tha
Another reason for PHP to return http code 0 is timeout. In my case, I had the following configuration:
curl_setopt($http, CURLOPT_TIMEOUT_MS,500);
It turned out that the request to the endpoint I was pointing to always took more than 500 ms, always timing out and always returning http code 0.
If you remove this setting (CURLOPT_TIMEOUT_MS) or put a higher value (in my case 5000), you'll get the actual http code, in my case a 200 (as expected).
See https://www.php.net/manual/en/function.curl-setopt.php
I had same problem and in my case this was because curl_exec function is disabled in php.ini. Check for logs:
PHP Warning: curl_exec() has been disabled for security reasons in /var/www/***/html/test.php on line 18
Solution is remove curl_exec from disabled functions in php.ini on server configuration file.
What is the exact contents you are passing into $html_brand?
If it is has an invalid URL syntax, you will very likely get the HTTP code 0.