Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 警告:getimagesize():文件名不能为空_Php - Fatal编程技术网

Php 警告:getimagesize():文件名不能为空

Php 警告:getimagesize():文件名不能为空,php,Php,我问了这个问题,发现PHP配置将我的上传限制为2MB,所以我将其固定为3MB。然而,我现在有另一个问题:我也在检查图像尺寸,如果图像看起来超过3MB,它就会失败,抛出下面的错误。那么,我如何停止错误并自己检查大小,而不是PHP配置 警告:getimagesize:文件名不能为空 代码如下: $size = $_FILES['image']['size']; list($width, $height) = getimagesize($_FILES['image']['tmp_name']); $m

我问了这个问题,发现PHP配置将我的上传限制为2MB,所以我将其固定为3MB。然而,我现在有另一个问题:我也在检查图像尺寸,如果图像看起来超过3MB,它就会失败,抛出下面的错误。那么,我如何停止错误并自己检查大小,而不是PHP配置

警告:getimagesize:文件名不能为空

代码如下:

$size = $_FILES['image']['size'];
list($width, $height) = getimagesize($_FILES['image']['tmp_name']);
$minh = 400;
$minw = 600;
$one_MB = 1024*1024; //1MB
if($size > ($one_MB*3))// this is not checking the size at all, the last echo is what I get if I try to upload over 3mb.
{
  echo"File exceeds 3MB";
}
elseif ($width < $minw ) {
  echo "Image width shouldn't be less than 600px";
}
elseif ($height <  $minh){
  echo "Image height shouldn't be less than 400px";
}
else{
  if (move_uploaded_file($_FILES['image']['tmp_name'], $new_location)){
    //do something
  } 
  else{
    echo "Image is too big, try uploading below 3MB";
  }
}

看起来上传有点出错了。尝试在getimagesize之前添加一些错误处理:

if (!file_exists($_FILES['image']['tmp_name'])) {
    echo "File upload failed. ";
    if (isset($_FILES['upfile']['error'])) {
         echo "Error code: ".$_FILES['upfile']['error'];
    }
    exit;
}
很难说为什么它失败了,因为它涉及到很多参数。错误代码可能会给您一个提示


否则,可以从这里开始阅读:

我也有同样的错误,请转到php.ini并转到第800行upload\u max\u filesize。 选择您的最大上传文件大小,我将我的设置为4M,在我的实际网站代码中,我不允许任何超过3mb的内容。
由于某些原因,使它们都具有相同的大小不起作用,PHP.ini需要比您允许上载的大小至少大1mb。

我已经尝试了使用1.5mb的相同图像,但它可以工作,当我尝试使用3.5mb时,它失败了,因此失败的原因是图像大小。我不明白的是为什么第一个if语句没有检查文件大小并让执行继续。我会试试你的建议。在调用get\u image\u size之前,你应该检查一下文件大小。在执行任何错误处理之前,脚本已失败。