Сохранение файла XML на сервере через PHP

Есть ссылка: http://ol.partners/api/ApiXml_v2/a10deef8-b1f1-4ad1-a4e9-86de5bbdad0c

Она отдает файл XML

Мне нужен скрипт, который бы мог сохранить данный файл на сервере(скрипт будет в дальнейшем пускаться в CRON). Файл должен заменяться более новым(с тем-же названием).

Тот, кусок кода, который у меня есть сейчас выглядит так(естественно он не работает):

    <?php    
          $file = "http://ol.partners/api/ApiXml_v2/a10deef8-b1f1-4ad1-a4e9-86de5bbdad0c"; //$_POST['link'] $_GET['link']
    
        if (!empty($file)) { 
    
             header('Content-Description: File Transfer');
             header("Content-Disposition: attachment; filename=XMLFile.xml");
             header("Content-Type: application/xml; charset=utf-8");
             header('Content-Transfer-Encoding: binary');
             header('Expires: 0');
             header('Cache-Control: must-revalidate');
             header('Pragma: public'); 
    
                $xml_data = file_get_contents($file);
    
                $ch = curl_init($file);
                curl_setopt($ch, CURLOPT_PUT, 1);
                curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);
                $output = curl_exec($ch);
    
                curl_close($ch);
    
        }  
    ?>

Заранее спасибо. Знаю, что для большинства данная задача очень проста.


Ответы (1 шт):

Автор решения: Николай Мурмиль

после первой строки кода где определена ссылка напишите что-то вида

file_put_contents("./data/out.xml", file_get_contents($file)); 

а остальное все удалите. "./data/" замените на корректный путь, куда хотите сохранить, и позаботьтесь о том, чтобы данная директория была доступна для записи юзеру от имени которого будет работать скрипт

→ Ссылка