Я написал этот простой фрагмент кода:
$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_error()
с подробностями об ошибках и разместите их здесь, пожалуйста.curl_error()
выявили?Ответы:
Проверка и обработка ошибок - друг программиста. Проверьте возвращаемые значения инициализирующих и выполняемых функций cURL.
curl_error()
иcurl_errno()
будет содержать дополнительную информацию в случае сбоя:* В
curl_init()
руководстве указано:Я заметил, что функция возвращается,
FALSE
когда вы используете ее$url
параметр, и домен не может быть разрешен. Если параметр не используется, функция может никогда не вернутьсяFALSE
. Тем не менее, всегда проверяйте это, поскольку в руководстве четко не указано, что такое «ошибки» на самом деле.источник
curl_exec
возврате FALSE. - Режим Curl Verbose Mode в примере PHPВ моем случае мне нужно установить
VERIFYHOST
иVERIFYPEER
вfalse
, как это:перед звонком
curl_exec($ch)
.Потому что я работаю между двумя средами разработки с самоназначенными сертификатами. С действительными сертификатами нет необходимости устанавливать
VERIFYHOST
иVERIFYPEER
вfalse
потому , чтоcurl_exec($ch)
метод будет работать и возвращать ответ вы ожидаете.источник
Это случилось со мной вчера, и в моем случае это было связано с тем, что я следовал руководству в формате PDF для разработки некоторого модуля для связи с API, и при копировании ссылки непосредственно из руководства по какой-то странной причине
hyphen
из скопированной ссылки был другой encoding и, следовательно,curl_exec()
всегда возвращался,false
потому что не мог связаться с сервером.Мне потребовалось пару часов, чтобы наконец понять разницу в следующих персонажах:
Каждый раз, когда я пытался получить доступ к ссылке прямо из браузера, она конвертировалась во что-то вроде
https://www.xn--eexample-0m3d.com/api
.Вам может показаться, что они равны, но если вы проверите кодировку
hyphens
здесь, вы увидите, что первыйhyphen
- это символы Юникода U + 2010, а другой - U + 002D .Надеюсь, это кому-то поможет.
источник