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()
또한 장애 발생 시 추가 정보가 포함됩니다.
try {
$ch = curl_init();
// Check if initialization had gone wrong*
if ($ch === false) {
throw new Exception('failed to initialize');
}
// Better to explicitly set URL
curl_setopt($ch, CURLOPT_URL, 'http://example.com/');
// That needs to be set; content will spill to STDOUT otherwise
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Set more options
curl_setopt(/* ... */);
$content = curl_exec($ch);
// Check the return value of curl_exec(), too
if ($content === false) {
throw new Exception(curl_error($ch), curl_errno($ch));
}
// Check HTTP return code, too; might be something else than 200
$httpReturnCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
/* Process $content here */
} catch(Exception $e) {
trigger_error(sprintf(
'Curl failed with error #%d: %s',
$e->getCode(), $e->getMessage()),
E_USER_ERROR);
} finally {
// Close curl handle unless it failed to initialize
if (is_resource($ch)) {
curl_close($ch);
}
}
* 그curl_init()
수동 상태:
성공 시 cURL 핸들을 반환하고 오류 시 FALSE를 반환합니다.
함수가 되돌아오는 것을 관찰했습니다.FALSE
사용할 때$url
매개 변수와 도메인을 확인할 수 없습니다.매개 변수가 사용되지 않으면 함수가 반환되지 않을 수 있습니다.FALSE
매뉴얼에 실제 에러가 기재되어 있지 않기 때문에 항상 체크해 주십시오.
저 같은 경우에는VERIFYHOST
그리고.VERIFYPEER
로.false
, 다음과 같이 합니다.
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
호출 전에curl_exec($ch)
.
왜냐하면 저는 두 가지 개발 환경 사이에서 자기 할당 자격증을 가지고 일을 하고 있기 때문입니다.유효한 증명서가 있는 경우는, 설정할 필요가 없습니다.VERIFYHOST
그리고.VERIFYPEER
로.false
왜냐하면curl_exec($ch)
메서드가 작동하여 원하는 응답을 반환합니다.
이 일은 어제 저에게 일어났고 제 경우 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
는 Unicode 문자 U+2010이고 다른 하나는 U+002D입니다.
이게 도움이 됐으면 좋겠네요.
언급URL : https://stackoverflow.com/questions/8227909/curl-exec-always-returns-false
'source' 카테고리의 다른 글
cron 작업으로 mySQL 쿼리를 실행하시겠습니까? (0) | 2022.09.18 |
---|---|
PHPunit에서 테스트를 건너뛰는 방법 (0) | 2022.09.18 |
php의 최대 실행 시간을 늘리는 방법 (0) | 2022.09.18 |
레코드 존재 여부 Laravel 확인 (0) | 2022.09.18 |
PHP 문자열을 암호화 및 해독하려면 어떻게 해야 합니까? (0) | 2022.09.18 |