source

curl_exec()은 항상 false를 반환합니다.

factcode 2022. 9. 18. 09:49
반응형

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

반응형