【问题标题】:move_uploaded_file($tmpPath, $destPath); Returns False. Macmove_uploaded_file($tmpPath, $destPath);返回假。苹果电脑
【发布时间】:2014-03-09 18:58:21
【问题描述】:
return move_uploaded_file($tmpPath, $destPath);

在哪里

$destPath = "/Library/WebServer/Documents/root/media/tmp/catalog/650540b.jpg"

$tmpPath = "/Library/WebServer/Documents/root/tmp/640540b.jpg"

我修改了两个目录,

$_FILES['image_file']['tmp_name'] = "/Library/WebServer/Documents/superiorstore/tmp/640540b.jpg"
$_FILES['image_file']['name'] = "650540b.jpg"

但是 move_uploaded_file 总是返回 false。在我的本地机器上运行用于测试的代码之前,我将文件放在 tmp 目录中。

【问题讨论】:

  • 可能是因为在 $tmpPath 中您使用连字符而不是等号将字符串分配给变量?
  • move_uploaded_file 只有在当前请求期间实际上传文件时才会移动文件。如果手动将文件放在某处,则不能使用 move_uploaded_file,而是使用重命名或移动。
  • 您实际上是在发布它并抛出一个表单,还是只是使用放置在目录 (temp) 中的文件来测试命令?
  • 我不是通过表单发帖的。我是手动使用 tmp 文件夹。我想我至少可以做到这一点。
  • 我正在做 phpunit 测试。我怎么能在测试用例中解决这个问题。我不能只是改变方法。

标签: php macos apache unit-testing


【解决方案1】:

我希望您检查来自documentation 的那些行

  • 此函数检查以确保文件名指定的文件是有效的上传文件(意味着它是通过 PHP 的 HTTP POST 上传机制上传的)。如果文件是有效的,它将被移动到目的地给定的文件名。

  • 如果对上传的文件进行的任何操作都有可能向用户泄露其内容,甚至向同一系统上的其他用户泄露,则这种检查尤为重要。

我最好的选择是您尝试仅将文件从一个目录移动到另一个目录,如果是这样,您可能想使用一个命令作为rename()move_uploaded_file() 仅在上传过程有已正确完成。这就是为什么你仍然会收到false

【讨论】:

  • 那么您将如何在测试用例中解决该问题?
  • 您需要设置一个表单并按原样发布文件
猜你喜欢
  • 2021-10-12
  • 1970-01-01
  • 2022-12-04
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多