Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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文件上载上的文件无效_Php_File Upload - Fatal编程技术网

PHP文件上载上的文件无效

PHP文件上载上的文件无效,php,file-upload,Php,File Upload,我已经为图像文件建立了一个带有HTML表单/PHP上传的网站,当它在我本地计算机上的XAMPP上运行时效果很好,但当我将它上传到000webhost时,大多数时候它会说文件无效,只有有时图像才能成功上传。我已经尝试在php配置中增加最大执行时间,但似乎没有解决这个问题。我尝试上传的文件小于php配置中的最大文件大小,并且在我的测试机器上工作得非常好 if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"]

我已经为图像文件建立了一个带有HTML表单/PHP上传的网站,当它在我本地计算机上的XAMPP上运行时效果很好,但当我将它上传到000webhost时,大多数时候它会说文件无效,只有有时图像才能成功上传。我已经尝试在php配置中增加最大执行时间,但似乎没有解决这个问题。我尝试上传的文件小于php配置中的最大文件大小,并且在我的测试机器上工作得非常好

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
我觉得奇怪的是,它有时有效,有时无效,不知道该尝试什么

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
编辑:

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
这是表格 文件名:

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
if(($_文件[“文件”][“类型”]=“图像/gif”)
||($_文件[“文件”][“类型”]=“图像/jpeg”)
||($_文件[“文件”][“类型”]=“图像/pjpeg”)
||($_文件[“文件”][“类型”]=“图像/png”))
{
如果($\u文件[“文件”][“错误”]>0)
{
回显“返回代码:”.$\u文件[“文件”][“错误”]。“
”; } 其他的 { echo“上传:.”文件[“文件”][“名称”]。“
”; 回显“类型:”.$\u文件[“文件”][“类型”]。“
”; 回显“大小:”($_文件[“文件”][“大小”]/1024)。“Kb
”; 回显“临时文件:”.$\u文件[“文件”][“tmp\u名称”]。“
”; 移动上传的文件($文件[“文件”][“tmp文件名”], “丘吉尔图像/pauls.jpeg”); “echo”存储在:“.”丘吉尔图像/pauls.jpeg中; } } 其他的 { echo“Invalid file”;//这是我看到的部分 }
您的文件类型检测依赖于浏览器发送的非常不可靠的
$\u文件[“file”][“type”]

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
检测上传文件是否为图像的更好方法是

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }

您的文件类型检测依赖于
$\u文件[“文件”][“类型”]
,这是由浏览器发送的,非常不可靠

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
检测上传文件是否为图像的更好方法是

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }

确保为上载的文件定义的是绝对路径而不是相对路径。

确保为上载的文件定义的是绝对路径而不是相对路径。

在执行任何其他操作之前,应首先检查上载是否真的成功:

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    ... handle upload...
    if (!move_uploaded_file(...)) { // <--important. ALWAYS check if the move worked.
       die("File move failed. Data is lost");
    }
} else {
   die("Upload failed with code " . $_FILES['file']['error']);
}
if($\u FILES['file']['error']==UPLOAD\u ERR\u OK){
…处理上载。。。

如果(!move_uploaded_file(…){/在执行任何其他操作之前,应首先检查上载是否成功:

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    ... handle upload...
    if (!move_uploaded_file(...)) { // <--important. ALWAYS check if the move worked.
       die("File move failed. Data is lost");
    }
} else {
   die("Upload failed with code " . $_FILES['file']['error']);
}
if($\u FILES['file']['error']==UPLOAD\u ERR\u OK){
…处理上载。。。

如果(!move_上传了_文件(…){/我今天遇到了这个问题..非常遗憾。修复大约花了一个小时

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
想法:检查脚本顶部的$_文件[“file”][“type”]==“image/gif”对我来说是失败的。似乎浏览器填充的是“空白数据”而不是“image/gif”,所以我的初始检查每次都以“无效文件类型”失败

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
问题:浏览器似乎没有正确地从tmp目录跨文件类型发送

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }

我的修复:删除文件类型检查…如上所述,它非常不可靠…

我今天遇到了这个问题…非常遗憾。修复花费了大约一个小时

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
想法:检查脚本顶部的$_文件[“file”][“type”]==“image/gif”对我来说是失败的。似乎浏览器填充的是“空白数据”而不是“image/gif”,所以我的初始检查每次都以“无效文件类型”失败

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }
问题:浏览器似乎没有正确地从tmp目录跨文件类型发送

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }


我的修复:删除文件类型检查…如上所述,它非常不可靠…

检查PHP文件权限。在OowebHost中,您可以在chmod中找到它。更改为“777”。否则,该文件没有执行/写入的权限。

检查PHP文件权限。在OowebHost中,您可以在chmod中找到它。更改为“77”7.否则,该文件没有执行/写入的权限

您需要显示一些源代码和您收到的确切错误消息。
但当我将其上载到000webhost时,大多数时候它会显示无效文件,只有有时图像才能成功上载。
这种不一致的行为听起来像是主机问题s而不是你的代码…@toopay和Pekka我现在添加了我的代码。你需要显示一些源代码和你收到的确切错误消息。
但当我将其上载到000webhost时,大多数时候都会显示无效文件,只有有时图像才能成功上载。
这种不一致的行为听起来像是托管问题除了你的代码之外…@toopay和Pekka我现在添加了我的代码谢谢你的帮助,效果非常好。我从W3学校获得了我正在使用的代码。我想知道他们为什么不推荐使用这种方法。等等,不,这还没有修复它,它有时有效,但有时会显示警告:getimagesize()[function.getimagesize]:Filename不能为空,我猜这意味着有时文件无法在页面之间正确传输。在这种情况下,上载失败。请结合my和@Marc的回答,确保图像被上载,并且它是一个图像。我认为在某个时间内有东西阻止了太多上载,因为我尝试按照您和Marc的建议执行此操作,但当我最初说getimagesize函数中的无效文件名不能为空时,内存限制会导致此错误吗?在我的本地测试服务器上为128M,但在000Webhost上为64MB,这会是图像文件的问题吗?谢谢您的帮助,这非常有效。我获得了c我在这里使用的是W3学校的ode,我想知道为什么他们不推荐这种方法。等等,不,这还没有解决它,它有时有效,但有时会显示警告:getima
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
   {
       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 />";


          move_uploaded_file($_FILES["file"]["tmp_name"],
          "churchimages/pauls.jpeg");
          echo "Stored in: " . "churchimages/pauls.jpeg";

          }
  }

 else

 {
 echo "Invalid file";//This is the section I am seeing
 }