Search code examples
phpcurlphp-curl

PHP cURL, read remote file and write contents to local file


I want to connect to a remote file and writing the output from the remote file to a local file, this is my function:

function get_remote_file_to_cache()
{

    $the_site="http://facebook.com";

    $curl = curl_init();
    $fp = fopen("cache/temp_file.txt", "w");
    curl_setopt ($curl, CURLOPT_URL, $the_site);
    curl_setopt($curl, CURLOPT_FILE, $fp);

    curl_setopt($curl,  CURLOPT_RETURNTRANSFER, TRUE);

    curl_exec ($curl);

    $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    if($httpCode == 404) {
        touch('cache/404_err.txt');
    }else
    {
        touch('cache/'.rand(0, 99999).'--all_good.txt');
    }

    curl_close ($curl);
}

It creates the two files in the "cache" directory, but the problem is it does not write the data into the "temp_file.txt", why is that?


Solution

  • You need to explicitly write to the file using fwrite, passing it the file handle you created earlier:

    if ( $httpCode == 404 ) {
        ...
    } else {
        $contents = curl_exec($curl);
        fwrite($fp, $contents);
    }
    
    curl_close($curl);
    fclose($fp);