PHP Copy() 仅在某些时候有效

PHP Copy() is only working some of the time

(本质上是 this question 的副本,没有回复)

我有一个应用程序正在尝试使用 phone 相机拍照,并将该图像发送到我们的服务器。这是它背后的 PHP 代码:

    <?php

  if (isset($_FILES['idimage'])) {
    $img = $_FILES['idimage']['name'];
    $tmpimg = $_FILES['idimage']['tmp_name'];

    copy($tmpimg, "C:/MAMP/htdocs/ids/" . "id.png");
    exit();
  } else {
    echo "there is no data with name [idimage]";
  }

 ?>

我已经学习了 3 个不同的教程,它们都使用了您在上面看到的方法。这段代码有时有效,从测试来看它有效 3/22 次(~14%)。为什么是这样?是什么导致文件只在某些时候上传?

查看本教程,特别注意所采用的验证和路径验证...

https://www.tutorialspoint.com/php/php_file_uploading.htm

除非您进行适当的健全性检查,否则您将失明...

您找到的教程好像遗漏了相关信息。

  1. 您绝对需要验证 upload status:

    if ($_FILES['idimage']['error'] === UPLOAD_ERR_OK) {
        // Successful upload
    } else {
        // Everything else
    }
    
  2. 推荐的复制文件的功能是move_uploaded_file()功能,虽然从功能上来说应该没什么区别,主要是一种安全机制。

最后但同样重要的是,仔细检查您的应用是否设置了完整的错误报告并将内容发送到您可以检查的日志文件。