上传图标,运行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文件夹有上传的图片,完成~