您的位置:首页 > 编程语言 > PHP开发

move_uploaded_file()移动文件失败?

2018-03-01 11:16 344 查看
上传图标,运行move_uploaded_file失败:

       failed to open stream: No such file or directory 

       Unable to move 

     
打开流失败,没有这样的文件或目录

      无法移动

搬一下书本,官网上是这样说的:

move_uploaded_file — 将上传的文件移动到新位置

bool move_uploaded_file ( string $filename , string $destination )

成功时返回 TRUE
如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 FALSE
如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回FALSE。此外还会发出一条警告。
看了我好多遍,第二个,出于某些原因无法移动,某些原因是什么鬼?
由于执行这个函数返回的数据较少,成功是true,失败是false;但是失败又有很多种情况,在这里我只列几个通过推测加上查资料所得的有可能失败的原因:

1、不是使用POST方法上传的文件

2、php.ini 配置出错

3、默认暂时存储的文件夹或目标文件夹 权限不足

 

一、在官网中,对该函数的描述中写道,“本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过
PHP 的 HTTP POST 上传机制所上传的”;

检查代码,form提交是用的post,而且输出$_FILES["logo"],结果显示正常,显然不是这种原因导致的。

is_uploaded_file()判断是否是一个上传的文件,执行了一下,返回的是true。

 

二、php.ini的配置中需要注意的是:

需确保文件上传是开启的

file_uploads = On

上传的文件暂时存储的目录,为了不受其他因素影响,我重新新建了一个文件夹

upload_tmp_dir = "C:\temp"

如果文件过大的话,需要对以下几项进行更改

upload_max_filesize = 2M

max_file_uploads = 20

在上传文件的时候,选择的文件为20kb以下的图片,因此排除这种原因。

 

三、最后,设置权限

       对文件进行操作,需要有读写权限。在网上查阅了很多资料,有很多种解法,也做了多种尝试,最后认定:文件夹的权限添加上Everyone-完全控制(注意是暂时放图片的文件夹和目标文件夹两个都要设置)。具体步骤如下:文件夹--右键属性--安全--

 










 

再运行一遍,upload文件夹有上传的图片,完成~



 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP filesystem