curl_exec () всегда возвращает false

Я написал этот простой фрагмент кода:

$ch = curl_init(); //Set options curl_setopt($ch, CURLOPT_URL, "http://www.php.net"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $website_content = curl_exec ($ch); 

В моем случае $website_content приходит как false . Может ли кто-нибудь предлагать / советовать что-то, что может пойти не так?

Проверка ошибок и обработка – друг программиста. Проверьте возвращаемые значения инициализации и выполнения функций cURL. curl_error() и curl_errno() будут содержать дополнительную информацию в случае сбоя:

 try { $ch = curl_init(); if (FALSE === $ch) throw new Exception('failed to initialize'); curl_setopt($ch, CURLOPT_URL, 'http://example.com/'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt(/* ... */); $content = curl_exec($ch); if (FALSE === $content) throw new Exception(curl_error($ch), curl_errno($ch)); // ...process $content now } catch(Exception $e) { trigger_error(sprintf( 'Curl failed with error #%d: %s', $e->getCode(), $e->getMessage()), E_USER_ERROR); } 

Это случилось со мной вчера, и в моем случае было то, что я следовал руководству в формате PDF для разработки модуля для связи с API и при копировании ссылки непосредственно из руководства по какой-то нечетной причине hyphen из скопированной ссылки был в различное кодирование, и поэтому curl_exec() всегда возвращал false потому что он не мог связаться с сервером.

Мне потребовалось пару часов, чтобы, наконец, понять разницу в символах ниже:

 https://www.e‐example.com/api https://www.e-example.com/api 

Каждый раз, когда я пытался получить доступ к ссылке непосредственно из браузера, он преобразовывался в нечто вроде https://www.xn--eexample-0m3d.com/api .

Может показаться вам, что они равны, но если вы проверите кодировку hyphens здесь, вы увидите, что первый hyphen является символом Юникода U + 2010, а другой – U + 002D .

Надеюсь, это поможет кому-то.