PHP只上传图片错误!如何解决这个问题?

PHP只上传图片错误!如何解决这个问题?,php,file-upload,restriction,Php,File Upload,Restriction,可能重复: 您好,在php中有一个上载脚本问题。我试图让它只接受图像,但我得到了一个错误,我不知道如何修复它。当我删除唯一的图像部分时,效果很好。我希望有人能帮我:) 我得到的错误代码是: 严格标准:只有变量才能通过引用传递 第3行的C:\xampp\htdocs\upload\u file.php无效文件 upload_file.php代码: <?php $allowedExts = array("jpg", "jpeg", "gif", "png"); $extension = en

可能重复:

您好,在php中有一个上载脚本问题。我试图让它只接受图像,但我得到了一个错误,我不知道如何修复它。当我删除唯一的图像部分时,效果很好。我希望有人能帮我:)

我得到的错误代码是:

严格标准:只有变量才能通过引用传递 第3行的C:\xampp\htdocs\upload\u file.php无效文件

upload_file.php代码:

<?php
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

提前谢谢

不能对
explode()
的结果调用
end()
,因为它需要一个变量作为第一个参数

根据:

阵列。此数组是通过引用传递的,因为它是由 功能。这意味着您必须传递一个实变量,而不是 函数返回数组,因为只能返回实际变量 通过引用传递

这样做:

$foo = explode('.', $_FILES['file']['name']);
$extension = end($foo);
另一种方法是停用严格的错误检查,但我想最好是删除错误。

不能对
explode()
的结果调用
end()
,因为它需要一个变量作为第一个参数

根据:

阵列。此数组是通过引用传递的,因为它是由 功能。这意味着您必须传递一个实变量,而不是 函数返回数组,因为只能返回实际变量 通过引用传递

这样做:

$foo = explode('.', $_FILES['file']['name']);
$extension = end($foo);

另一种方法是停用严格的错误检查,但我想最好是删除错误。

嗯……我想
end()
被定义为使用引用……而
explode()
的结果不是引用……只有变量可以包含引用。或者类似的东西。我只是试了一下,看起来是那样的。使用临时变量时,没有严格的注意事项。可能又是一些奇怪的PHP怪癖显然,它在文档中,添加到您的答案中。我很少使用
end()
,所以我从来不知道。嘿,谢谢你的回答!但是现在它不接受任何图片,它总是给出错误:无效文件我想我会删除限制好吧…我想
end()
被定义为使用引用…而
explode()
的结果不是引用…只有变量可以包含引用。或者类似的东西。我只是试了一下,看起来是那样的。使用临时变量时,没有严格的注意事项。可能又是一些奇怪的PHP怪癖显然,它在文档中,添加到您的答案中。我很少使用
end()
,所以我从来不知道。嘿,谢谢你的回答!但现在它不接受任何图片,它总是给出错误:无效文件我想我会取消限制