Ошибка PHP (неопределенное смещение: 1) при использовании Chrome для загрузки файла - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть PHP-скрипт для управления загрузкой (VIP-пользователи могут загружать только) Скрипт работает с обычными менеджерами загрузки и браузерами (такими как firefox, IE, IDM & edge), но я получаю эту ошибку, когда хочу использовать chrome для загрузки файла:

Неопределенное смещение: 1 в /home/username/public_html/index.php в строке 103

Строка № 103: list ($ range, $ extra_ranges) = взорваться (',', $ range_orig, 2);

    //check if http_range is sent by browser (or download manager)
    if($is_resume && isset($_SERVER['HTTP_RANGE']))
    {
        list($size_unit, $range_orig) = explode('=', $_SERVER['HTTP_RANGE'], 2);

        if ($size_unit == 'bytes')
        {
            //multiple ranges could be specified at the same time, but for simplicity only serve the first range
            //http://tools.ietf.org/id/draft-ietf-http-range-retrieval-00.txt
            list($range, $extra_ranges) = explode(',', $range_orig, 2);
        }
        else
        {
            $range = '';
        }
    }

Я пробовал некоторые из кодов, которые я нашел здесь в темах stackoverflow, но не работает!

list($range, $extra_ranges) = explode(',', $range_orig);

list($range, $extra_ranges) = array_pad(explode(',', $range_orig, 2), -2, null);

list($range, $extra_ranges) = explode(',', $range_orig. ',');

1 Ответ

1 голос
/ 09 апреля 2019

Дополнительные диапазоны являются необязательными.

По сути, explode(',', $range_orig, 2) возвращает вам либо массив из одного значения (если имеется только один диапазон), либо массив из 2 значений (если их минимум 2).

Вы можете использовать array_pad перед explode, чтобы дополнить null вашего массива этим вторым индексом.Вы пробовали это, но использовали отрицательный индекс, который делает ваш массив [null, <first_range>] вместо [<first_range>, null].

Итак, измените ваш код следующим образом:

list($range, $extra_ranges) = array_pad(explode(',', $range_orig, 2), 2, null);
...