PHP制作目录

时间:2013-09-04 08:05:59

标签: php directory

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

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 /中没有这样的文件或目录第103行的qpm / submit.php

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

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

存储在echos中的echo是正确的字符串所以不确定为什么mkdir失败了,如果这是一个简单的修复就道歉

2 个答案:

答案 0 :(得分:1)

关于mkdir(),您应该了解一些事项:

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

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

  3. 我建议永远不要直接使用$_FILES['file']['name']的值来在服务器上创建文件;使用tempnam(),可选择与原始文件名的清理版本结合使用。

答案 1 :(得分: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')”如果允许的话