PHP не отправляет репозиторий

#php

#php

Вопрос:

У меня очень странная проблема с php, и я не могу найти ей никакого объяснения. Я хочу добавить эту строку кода, чтобы получить расширение из отправленного файла:

 $extension = array_pop( explode( "." , $_FILES["myFiles"]["name"][$key]);
  

но если я это сделаю, php не отправит ответ, хотя файл успешно сохранен. Если я просто удалю эту строку и жестко закодирую «.jpg» вместо $extension, он отправит ответ, как и ожидалось.

 <?php

$response = array();

if (isset($_FILES)) {
    foreach ($_FILES["myFiles"]["tmp_name"] as $key => $value) {
        $user = $_POST["user"];
// when i add the line below it deosn't send the response!
        $extension = array_pop( explode( "." , $_FILES["myFiles"]["name"][$key]) );
        move_uploaded_file($value, "uploads/$user.$extension");
    };
    $response["msg"] = "image has been uploaded";
} else {
    $response["msg"] = "selcect an image";
}

echo json_encode($response);
  

Комментарии:

1. Рассмотрите возможность использования pathinfo($_FILES["myFiles"]["name"][$key], PATHINFO_EXTENSION) для более надежного поиска расширений.

2. Вы должны включить отчет об ошибках. Я думаю, что эта строка выдает ошибку, потому что array_pop принимает ссылку на значение lvalue, но вы передаете ей значение rvalue.

3. ^^^ Это. Отображается ошибка и обезьяны с повторным JSON.

4. array_pop(explode(".", "1.2.3")); этот код выдает следующую ошибку Notice: Only variables should be passed by reference in php shell code on line 1

5. Вы получите более быстрый ответ на этот вопрос, спросив Google, как включить отчет об ошибках в PHP. Это обычный запрос, вы можете найти множество сайтов с инструкциями

Ответ №1:

array_pop принимает аргумент по ссылке. Вы не можете предоставить аргумент непосредственно из другой функции в array_pop. Вместо этого в вашем случае вы должны сделать это:

 $parts = explode("." , $_FILES["myFiles"]["name"][$key]);
$extension = array_pop($parts);
  

Но! Вы НИКОГДА не должны доверять данным клиента, даже если это просто расширение файла. Лучше проверить само расширение (это jpg, png, svg, gif), также проверьте, действительно ли файл является изображением, проверьте размер этого изображения и т.д…