2017-11-14 12 views
1

私はLaravelアプリケーションをテスト目的でGodaddyの共有ホスティングに展開しています(これをドメインで共有できるように)。私はより良いソリューションを使用します。Laravelと共有ホスティングCURLが動作しません

私のlocalhostでは、すべて正常に動作しますが、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ではうまくいきましたが、なんらかの理由でホスティングにはうまくいきません。

誰もがこの問題に取り組んでいますか?

このI私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

がカール上で有効になっているようカールをデバッグするときしかし、あなたは常にCURLOPT_VERBOSEを有効にし、詳細なログを取得する必要があり、それは、通常、超便利ですサーバ? – buzzfizz

+0

@buzzfizzデフォルトで有効になっていますが、チェックしてカールコマンドを認識します – zuif

+0

'echo phpinfo();'を別のファイルに置き、curlがサーバ上で有効になっているかどうかをチェックします。そうでない場合は、サポートチームに連絡してください。 – Suraj

答えて

1

最も可能性を助けている場合、あなたはGoDaddyのことで、ファイアウォール、ブロックされています。私は共有のウェブホストで何度も何度も同じことを見た。あなたはおそらくVPSに投資するべきです(彼らはramnodeに$ 3.5/monthのようなものです)。しかし、あなたはまたいくつかの間違いを犯しています。つまり、curl_setoptによって与えられたエラーを無視して失敗するとbool(false)あなたのコードは完全に無視されます。代わりにこれを使用してみてください:

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; 
} 

カールコードをデバッグするとき

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); 
    } 
} 
関連する問題