PHP:使用move_uploaded_file()提示filed to open stream和Unable to move

项目场景:

在学习PHP如何上传文件时,使用move_uploaded_file方法时:产生两个Warning:file to open stream 和Unable to move

问题描述:

Warning: move_uploaded_file(D:/www/2737/upfile/test.txt): failed to open stream: No such file or directory in D:\WAMP\www\myphp\unit6\Example6_6.php on line 22

Warning: move_uploaded_file(): Unable to move ‘D:\WAMP\tmp\php1791.tmp’ to ‘D:/www/2737/upfile/test.txt’ in D:\WAMP\www\myphp\unit6\Example6_6.php on line 22

<?php
/*判断是否上传文件*/
if(!empty($_FILES['up_file']['name'])){
//将文件信息赋值给变量$fileinfo 
	$fileinfo=$_FILES['up_file'];
	if($fileinfo['size']<2097152&&$fileinfo['size']>0){		//判断文件大小
		$path="D:/www/myphp/unit6/upfile/".$_FILES["up_file"]["name"];			//定义文件路径
		move_uploaded_file($fileinfo['tmp_file']["tmp_name"],$path);	//上传文件
		echo "文件上传成功!";
	}else{
		echo "文件大小不符合!";
	}
}
?>

原因分析:

一开始查询时,有讲是文件大小问题的,因为php.ini文件里有:max_file_uploads = 20
但是试着上传一个只有两个字节的文件时还是原始报错,所以排除此问题。

之后又猜想是目录权限不够,查询资料发现是其实原因是文件找不到?

解决方案:

使用绝对路径替换相对路径

原本关键代码:

$path="upfile/".$_FILES["up_file"]["name"];			
move_uploaded_file($fileinfo['tmp_file']["tmp_name"],$path);	

修改后关键代码:

$path="D:/www/myphp/unit6/upfile/".$_FILES["up_file"]["name"];		
move_uploaded_file($fileinfo['tmp_file']["tmp_name"],$path);

还有一种修改权限的方法,把权限修改成777即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值