Не работает CURL в php

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

Столкнулся с проблемой, которую не могу никак решить.

Имеется такой код

<?php
ob_start();

echo "<pre class='updateupload'>";
echo "Загрузка ...";

ob_flush();
flush();

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://sites.ru/number_order.txt");
//curl_setopt($ch, CURLOPT_BUFFERSIZE,128);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'progress');
curl_setopt($ch, CURLOPT_NOPROGRESS, false); // needed to make progress function work
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$html = curl_exec($ch);
curl_close($ch);

file_put_contents(__DIR__ . '/phpMyAdmin/templates/config/update.txt', $html);
function progress($resource,$download_size, $downloaded, $upload_size, $uploaded)
{
    if($download_size > 0)
         echo $downloaded / $download_size  * 100;
    ob_flush();
    flush();
    sleep(1); // just to see effect
}

echo "Завершена";
ob_flush();
flush();
echo "</pre>";


?>

Данный код отлично работает, если файл, который выводит этот код идет напрямую, то есть так: https://site.ru/update.php. При загрузке страницы весь код обрабатывается хорошо и записывает информацию верно в файл update.txt

Но возникает проблема, когда я данный код перемешаю в папку на сайте и пытаюсь обработать через папку, то есть так: https://site.ru/update/update.php. На странице все также работает, выводит сообщение, что загрузка завершена, но только при открытии файла update.txt изменений нет, то есть скрипт не загрузил в него ничего.

Почему CURL работает напрямую, и не работает из папки?

Ответы

▲ 0Принят

Проблема решена следующим путем.

в 22 строчке вместо __DIR__ вставил $_SERVER['DOCUMENT_ROOT']