PHP:move_uploaded_file() 无法打开流:没有这样的文件或目录

新手上路,请多包涵

我试图让 PHP 将上传的文件从 tmp 目录移动到我的网络服务器上的某个永久位置。看起来很简单,但我收到了这个错误:

Unable to move 'C:\UniServer\tmp\php3F62.tmp' to 'static/images/slides/1/1.jpg'

很直接,对吧?它找不到目标文件夹。

我的问题是: 如何引用所需的目标目录?

引用是否相对于脚本在服务器上的位置?还是相对于 URL?还是 PHP DOCUMENT_ROOT ?还是操作系统的文件系统?或者是其他东西?

我在 PHP 文档中或在 SO 上的任何类似问题中都找不到答案。

任何人都可以帮忙吗?谢谢。

原文由 Chuck Le Butt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 768
2 个回答

跟踪路径的一种简单方法就是在 index.php 中定义绝对路径

define ('SITE_ROOT', realpath(dirname(__FILE__)));

然后像这样使用它:

 move_uploaded_file($_FILES['file']['tmp_name'], SITE_ROOT.'/static/images/slides/1/1.jpg');

原文由 Lawrence Cherone 发布,翻译遵循 CC BY-SA 3.0 许可协议

在文件目标名称之前添加 $_SERVER['DOCUMENT_ROOT'] 。它将在服务器上添加项目的绝对位置,以便文件可以上传到您想要的确切位置。

代码示例

$ext = pathinfo($file['name'], PATHINFO_EXTENSION);

$file_name = time() . "-" . rand(100000, 1000000) . "." . $ext;

$destination = $_SERVER['DOCUMENT_ROOT'].'/storage/uploads/' . $file_name;

$res = move_uploaded_file($file['tmp_name'], $destination);

原文由 MUHINDO 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题