2017-11-14 8 views
1

나는 Laravel 응용 프로그램을 테스트 용으로 Godaddy의 공유 호스팅에 배포하므로 (제작 된 도메인 용으로 공유 할 수 있음) 더 나은 솔루션을 사용하게 될 것입니다.Laravel 및 공유 호스팅 CURL이 작동하지 않습니다.

내 로컬 호스트에서 모든 것이 제대로 작동하지만 CURL 호스팅에서 작동하지 않습니다. 실제로이 CURL

function setUrl($url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, public_path().'/cookies/cookies.txt'); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, public_path().'/cookies/cookies.txt'); 
    $buffer = curl_exec($ch); 
    curl_close($ch); 
    return $buffer; 
} 

이 방법은 작동하지 않습니다. 호스팅에서 내 cookies.txt 파일을 확인하면 항상 비어 있습니다. 실제로 공개, 다른 폴더 및 모든 곳으로 이동하려고 시도했지만 편집되지는 않으며 항상 비어 있습니다. 그것은 내 localhost에서 잘 작동하지만, 어떤 이유로 그것은 호스팅에서 일하고 싶지 않습니다.

누구든지이 문제를 해결할 수있는 아이디어가 있습니까?

이 나는 ​​내 curinfo을가

"content_type" => null 
    "http_code" => 0 
    "header_size" => 0 
    "request_size" => 0 
    "filetime" => -1 
    "ssl_verify_result" => 0 
    "redirect_count" => 0 
    "total_time" => 0.200232 
    "namelookup_time" => 4.8E-5 
    "connect_time" => 0.0 
    "pretransfer_time" => 0.0 
    "size_upload" => 0.0 
    "size_download" => 0.0 
    "speed_download" => 0.0 
    "speed_upload" => 0.0 
    "download_content_length" => -1.0 
    "upload_content_length" => -1.0 
    "starttransfer_time" => 0.0 
    "redirect_time" => 0.0 
    "redirect_url" => "" 
    "primary_ip" => "" 
    "certinfo" => [] 
    "primary_port" => 0 
    "local_ip" => "" 
    "local_port" => 0 
] 
+0

처럼, 컬 코드를 디버깅 할 때

function ecurl_setopt (/*resource*/$ch , int $option , /*mixed*/ $value):bool{ $ret=curl_setopt($ch,$option,$value); if($ret!==true){ //option should be obvious by stack trace throw new RuntimeException ('curl_setopt() failed. curl_errno: ' . curl_errno ($ch) .' curl_error: '.curl_error($ch)); } return true; } 

을하지만, 당신은 항상 일반적으로 슈퍼 유용, CURLOPT_VERBOSE을 활성화하고 자세한 로그를 얻어야한다 섬기는 사람? – buzzfizz

+0

@buzzfizz 기본적으로 사용 가능합니다. 검사 한 후 컬링 명령을 인식합니다. – zuif

+0

'echo phpinfo();'를 별도의 파일에 저장하고 서버에서 curl이 사용 가능한지 여부를 점검하십시오. 그렇지 않은 경우 지원 팀에 문의하십시오. – Suraj

답변

1

가장 가능성이 도움이된다면, 당신은 방화벽 차단에서 GoDaddy에 의해 존재하고 있습니다. 나는 공유 웹 호스트에서 똑같은 똥을 무수히 보았다. 아마도 VPS에 투자해야 할 것입니다. (그들은 ramnode .. $ 3.5/month와 같은 것입니다.)하지만, 실수도하고 있습니다. curl_setopt에 의해 주어진 어떤 에러도 무시합니다. 실패하면 bool (false)를 반환합니다. 코드가 완전히 무시됩니다. 이 대신 사용해보십시오 : 컬을 디버깅 할 때 컬상의 활성화되어

function setUrl($url) { 
    $debugfileh=tmpfile(); 
    $ch = curl_init(); 
    try{ 
    ecurl_setopt($ch, CURLOPT_URL, $url); 
    ecurl_setopt($ch, CURLOPT_VERBOSE, 1); 
    ecurl_setopt($ch, CURLOPT_STDERR, $debugfileh); 
    ecurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    ecurl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    ecurl_setopt($ch, CURLOPT_COOKIEJAR, public_path().'/cookies/cookies.txt'); 
    ecurl_setopt($ch, CURLOPT_COOKIEFILE, public_path().'/cookies/cookies.txt'); 
    $buffer = curl_exec($ch); 
    return $buffer; 
    }finally{ 
    var_dump('curl verbose log:',file_get_contents(stream_get_meta_data($debugfileh)['uri'])); 
    fclose($debugfileh); 
    curl_close($ch); 
    } 
}