0

我不确定为什么这段代码会破坏

mkdir("upload/".$username.'/'.$title.'/', 0700);
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/".$username.'/'.$title.'/' . $_FILES["file"]["name"]);
      echo "Stored in: " ."upload/".$username.'/'.$title.'/' . $_FILES["file"]["name"];
      $link = "upload/".$username.'/'.$title.'/' . $_FILES["file"]["name"];

这是我的错误

警告:mkdir() [function.mkdir]:第 101 行的 /Volumes/shared/Digital/_Websites/_TEST/qpm/submit.php 中没有这样的文件或目录

警告:move_uploaded_file(upload/test/test/Hand Over.docx)[function.move-uploaded-file]:无法打开流:/Volumes/shared/Digital/_Websites/_TEST/qpm/submit 中没有这样的文件或目录.php 在第 103 行

警告:move_uploaded_file() [function.move-uploaded-file]:无法在 /Volumes/shared/Digital 中将“/Applications/MAMP/tmp/php/phpYvo5b5”移动到“upload/test/test/Hand Over.docx” /_Websites/_TEST/qpm/submit.php 第 103 行存储在:upload/test/test/Hand Over.docx1 记录添加

我;确定我有这个工作,现在我以某种方式打破了它?

存储在 echo 中的 echo 回显了正确的字符串,因此不确定 mkdir 失败的原因,如果这是一个简单的修复程序,我们深表歉意

4

2 回答 2

1

您应该了解以下几点mkdir()

  1. 默认情况下,只有在父目录存在的情况下才能创建目录;如果您true作为第三个参数传递,它可以创建中间目录。

  2. 如果没有绝对路径,很难说您的目录将在哪里创建。您可以使用配置文件来存储它或使用 , 的组合__FILE____DIR__派生dirname()它。

我会进一步建议永远不要使用$_FILES['file']['name']直接在您的服务器上创建文件的值;使用tempnam(),可选地与原始文件名的净化版本结合使用。

于 2013-09-04T08:17:50.657 回答
0

首先,强烈建议使用绝对路径而不是相对路径。因为如果您在其他路径中运行此 php 脚本,相对路径可能无法正常工作。
以此为例:

test.php:
/home/donald/test.php

<?php
    mkdir("test_dir");

当 pwd 为“/home/donald/”时,您运行“php test.php”,它将在 /home/donald/ 中创建一个“test_dir”

当 pwd 为“/home/”时,您运行“php donald/test.php”,它将在 /home/ 中生成“test_dir”


,您还可以将 true 作为 mkdir 的第三个参数添加到 mkdir(),或者只使用“ exec('mkdir -p yourpath')" 如果允许

于 2013-09-04T09:16:06.783 回答