Php 警告:复制(..):无法打开流:中没有此类文件或目录

Php 警告:复制(..):无法打开流:中没有此类文件或目录,php,file-upload,upload,stream,copy,Php,File Upload,Upload,Stream,Copy,我对PHP相当陌生,并试图创建一个简单的PHP文件上传系统 我遵循了来自()的教程。我只是修改了$HTTP_POST_文件,因为它给了我错误,而且从我所读到的内容来看,它在PHP中是旧的 我收到的错误消息较少,但我在copy()函数中收到了一个错误,其中包含以下给定的错误消息: Warning: copy(Task2/uploads/anonymous.jpg): failed to open stream: No such file or directory in C:\xampp\htdoc

我对PHP相当陌生,并试图创建一个简单的PHP文件上传系统

我遵循了来自()的教程。我只是修改了
$HTTP_POST_文件
,因为它给了我错误,而且从我所读到的内容来看,它在PHP中是旧的

我收到的错误消息较少,但我在
copy()
函数中收到了一个错误,其中包含以下给定的错误消息:

Warning: copy(Task2/uploads/anonymous.jpg): failed to open stream: No such file or directory in C:\xampp\htdocs\Task2\upload.php on line 13

Warning: copy(Task2/uploads/DSCF4639.JPG): failed to open stream: No such file or directory in C:\xampp\htdocs\Task2\upload.php on line 14

Warning: copy(Task2/uploads/jien maroon.jpg): failed to open stream: No such file or directory in C:\xampp\htdocs\Task2\upload.php on line 15
我原以为权限(Windows7中的读/写权限)有问题,但通过快速的谷歌搜索,似乎XAMPP默认设置为处理Win7上的权限

代码如下:

<?php

//set where you want to store files
//in this example we keep file in folder upload
//$_FILES['ufile']['name']; = upload file name
//for example upload file name cartoon.gif . $path will be upload/cartoon.gif

$path1= "Task2/uploads/".$_FILES['ufile']['name'][0];
$path2= "Task2/uploads/".$_FILES['ufile']['name'][1];
$path3= "Task2/uploads/".$_FILES['ufile']['name'][2];

//copy file to where you want to store file
copy($_FILES['ufile']['tmp_name'][0], $path1);
copy($_FILES['ufile']['tmp_name'][1], $path2);
copy($_FILES['ufile']['tmp_name'][2], $path3);

//$_FILES['ufile']['name'] = file name
//$_FILES['ufile']['size'] = file size
//$_FILES['ufile']['type'] = type of file
echo "File Name :".$_FILES['ufile']['name'][0]."<BR/>";
echo "File Size :".$_FILES['ufile']['size'][0]."<BR/>";
echo "File Type :".$_FILES['ufile']['type'][0]."<BR/>";
echo "<img src=\"$path1\" width=\"150\" height=\"150\">";
echo "<P>";

echo "File Name :".$_FILES['ufile']['name'][1]."<BR/>";
echo "File Size :".$_FILES['ufile']['size'][1]."<BR/>";
echo "File Type :".$_FILES['ufile']['type'][1]."<BR/>";
echo "<img src=\"$path2\" width=\"150\" height=\"150\">";
echo "<P>";

echo "File Name :".$_FILES['ufile']['name'][2]."<BR/>";
echo "File Size :".$_FILES['ufile']['size'][2]."<BR/>";
echo "File Type :".$_FILES['ufile']['type'][2]."<BR/>";
echo "<img src=\"$path3\" width=\"150\" height=\"150\">";

///////////////////////////////////////////////////////

// Use this code to display the error or success.

$filesize1=$_FILES['ufile']['size'][0];
$filesize2=$_FILES['ufile']['size'][1];
$filesize3=$_FILES['ufile']['size'][2];

if($filesize1 && $filesize2 && $filesize3 != 0)
{
echo "We have recieved your files";
}

else {
echo "ERROR.....";
}

//////////////////////////////////////////////

// What files that have a problem? (if found)

if($filesize1==0) {
echo "There're something error in your first file";
echo "<BR />";
}

if($filesize2==0) {
echo "There're something error in your second file";
echo "<BR />";
}

if($filesize3==0) {
echo "There're something error in your third file";
echo "<BR />";
}
?>

不要使用
复制
,使用解决了问题

问题出在路径上。。而不是
Task2/uploads/
我不得不把
。/Task2/uploads/


谢谢

确保目标目录存在,copy不会为您创建目录

第二个参数用于文件权限,对安全性很重要,请阅读更多:

第三个参数还将创建递归目录

if (!is_dir($directory)) {
    mkdir($directory, 0777, true);
}

不要那样使用
['name']
。恶意用户可以在上载数据中嵌入路径信息,并在服务器上任意位置涂鸦。通常会遇到此错误,要快速排除此错误,请执行以下步骤:这会产生相同的错误,并且此
警告:移动\u上载的\u文件():无法将C:\xampp\tmp\php87B9.tmp移到C:\xampp\htdocs\Task2\upload.php中的“Task2/uploads/DSCF4639.JPG”中,这可能是因为我正在使用xampp,并且我正在从我的电脑上载到我的电脑吗?现在这里有一个关于此常见错误的疑难解答清单:现在有一个关于此常见错误的疑难解答清单: