File_put_contents failed to open stream: Invalid argument in O_o

Рейтинг: 0Ответов: 1Опубликовано: 29.03.2015

Странная ерунда творится! Скажите, почему скрипт выдает такую ошибку?

Вот вам пример кода:

    function img_load($url,$fl,$nm){  
if (preg_match('/http/',$url)){  
    $ch = curl_init($url);  
    curl_setopt($ch, CURLOPT_HEADER, 0);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);  
    $out = curl_exec($ch);  
    $file = $fl.$nm.'.jpg';  
    $img = file_put_contents($file,$out);  
    curl_close($ch);  
    }  
    return $img;   
    }

Вот исполняющий файл:

$x = 'C:\srv\OpenServer\domains\domain-ru\published\publicdata\U0010117NEW\attachments\SC\products_pictures\1';  
$fl = substr($x, 0,-1);  
$file = file('C:\srv\OpenServer\domains\parsers\limg.csv');  
for ($i=0; $i<=count($file)-1 ; $i++) {   
    $itm = explode(';', $file[$i]);  
    $url = $itm[0];  
    $nm =   $itm[1];  
    img_load($url,$fl,$nm);  
    echo $nm."\n";  
}  
echo 'File img dowmload-----------------------------OK'."\n";

В чем загадка этой ошибки, не понимаю. Может я что-то не так делаю? Подскажите, ребята!

Ответы

▲ 1

Честно говоря нифига непонятно - мы не можем видеть что передаётся в аргументах, а ошибка говорит что какой-то аргумент неправильный (boolean вместо array, например).
Для сохранения результата cURL, нужно заюзать установку curl_setopt() с параметром CURLOPT_FILE, аргумент - потоковый дескриптор (fopen(), к примеру).
Результат запроса курл сбросит туда сам, тебе же надо только закрыть его и вернуть ссылку на него.