我不确定为什么这段代码会破坏
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失败了,如果这是一个简单的修复就道歉
答案 0 :(得分:1)
关于mkdir()
,您应该了解一些事项:
默认情况下,只有父目录存在才能创建目录;如果您将true
作为第三个参数传递,它可以创建中间目录。
如果没有绝对路径,很难说您的目录将在何处创建。您可以使用配置文件来存储它,也可以使用__FILE__
,__DIR__
和dirname()
的组合来派生它。
我建议永远不要直接使用$_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')”如果允许的话