PHP中move_uploaded_file问题 报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中move_uploaded_file问题 报错相关的知识,希望对你有一定的参考价值。
Warning: move_uploaded_file(./cov_img/70400801613.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /var/local/www/htdocs/portal/admin/front_page/xc/scfm.php on line 21
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php9K8KWc' to './cov_img/70400801613.jpg' in /var/local/www/htdocs/portal/admin/front_page/xc/scfm.php on line 21
错误报告是这种。
这是我在远程向远程服务器上传图片的代码:
$tag=$_POST['tag'];
echo $tag;
$file=urlencode($_FILES["cov_name"]["name"]); //对文字进行编码,否则上传中文文件时可能出错
$type=filekzm($file);
if (($type == ".gif")|| ($type == ".png")|| ($type == ".jpeg")|| ($type == ".jpg")|| ($type == ".bmp"))
if ($_FILES["cov_name"]["error"] > 0)
echo "返回错误: " . $_FILES["cov_name"]["error"] . "<br />";
else
$uploaddir="./cov_img/"; //相册封面所在路径
if(!file_exists($uploaddir))
mkdir($uploaddir);
$filepath=$uploaddir.$file;
if(move_uploaded_file($_FILES["cov_name"]["tmp_name"],$filepath)) //移动临时文件到相册封面所在路径,并改为正式文件
$file_path=urldecode($filepath);
$link=mysql_connect("localhost","goverment","govermentjiajia") or die("连接数据库服务有错误");
mysql_query("set names utf8");
mysql_select_db("goverment",$link);
$result=mysql_query("select * from cov_image");
$i=0;
while ($row=mysql_fetch_array($result))
if ($row['cov_name']==$tag)
echo "该相册已存在,上传失败!";
break;
mysql_query("insert into cov_image(cov_name,cov_path) VALUES('$tag','$file_path')");
echo "相册创建成功,如果要上传照片请点击:<a href='./sczp.php'>上传照片</a>";
mysql_free_result($result);
mysql_close($link);
else
echo "上传失败!";
function filekzm($a) //写一个获得文件类型的函数(拆分"."与文件类型、文件名字)
$c=strrchr($a,'.'); //以'.'为分隔符
if($c)
return $c;
else
return '';
?>
出错好像是权限的问题 我把临时文件目录tmp、图片所在目录cov_img都给成777
不管用 还是出现权限的问题 不知道哪的事 哪位高手帮帮在下啊。
说不清的话可以百度HI 我白天都在线
$uploaddir="./cov_img/"; //相册封面所在路径
这个权限是777 路径是相对的 没错啊!
Linux下的啦 windows哪有什么777权限啊 window的权限没那么严重啦
查看这个的权限和路径是否正确本回答被提问者采纳
PHP: move_uploaded_file(): 无法移动'/
【中文标题】PHP: move_uploaded_file(): 无法移动\'/【英文标题】:PHP: move_uploaded_file(): Unable to move '/PHP: move_uploaded_file(): 无法移动'/ 【发布时间】:2011-06-28 17:37:11 【问题描述】:我在刚设置的新服务器上不断收到此错误
[Wed Feb 16 22:46:51 2011] [error] [client 71.1.236.114] PHP Warning:
move_uploaded_file(upload/110216104651_00134_smooth_1440x900.jpg):
failed to open stream: Permission denied in /var/www/admin/_application/models/Roles.model on line 1757,
referer: http://nacc.biz/admin/admin/modifyarticle.php?roleid=4
[Wed Feb 16 22:46:51 2011] [error] [client 71.1.236.114] PHP Warning: move_uploaded_file():
Unable to move '/tmp/php6wlOg1' to 'upload/110216104651_00134_smooth_1440x900.jpg'
in /var/www/admin/_application/models/Roles.model on line 1757, referer:
http://nacc.biz/admin/admin/modifyarticle.php?roleid=4
[Wed Feb 16 22:46:51 2011] [error] [client 71.1.236.114] PHP Notice:
Upload Error: Error moving from temp dir in /var/www/admin/_application/models/Roles.model on line 1759,
referer: http://nacc.biz/admin/admin/modifyarticle.php?roleid=4
我添加了 777 并创建了一个上传目录,但错误仍然存在。如何找到需要更正或创建的路径?
【问题讨论】:
【参考方案1】:将upload/
的所有者更改为www-data:www-data
,并将chmod 更改为755
【讨论】:
chown -R www-data:www-data folder
这对我有用!
chown -R <username> <folder>
【参考方案2】:
看起来它不知道upload/
在哪里。确保您的语句中有完整路径。例如,如果上传目录实际上位于/var/upload
,那么请确保它在您的语句中,而不仅仅是upload
/。
【讨论】:
【参考方案3】:登录到您的 ftp 并确认以下内容:
文件夹存在,检查拼写 检查文件夹的属性,确保有读写权限0666
确保该文件位于您的公共 html 根目录中,否则请仔细检查该文件的所有者,并确保 PHP 对其具有读/写权限。
查看日志:
Unable to move '/tmp/php6wlOg1' to 'upload/110216104651_00134_smooth_1440x900.jpg'
在我看来,它在您的根目录中查找为upload/110216....
应该是path.to/public_html/upload/110216....
如果以上都不起作用,请发布您的代码行,上面有move_uploaded_file
。
【讨论】:
检查拼写时还要检查大小写(大写)是否相同。 Linux 对文件名和目录名区分大小写。【参考方案4】:它正在尝试将文件移动到upload/
而不是uploads/
,请确保该目录存在并且是可写的。
【讨论】:
【参考方案5】:如果没有拼写不匹配,请为您的上传目录(仅限该目录)提供所有用户权限sudo chmod a+rwx /path/to/folder
,这应该可以轻松解决问题。
如需进一步了解 Ubuntu 中的权限,请查看here。
【讨论】:
以上是关于PHP中move_uploaded_file问题 报错的主要内容,如果未能解决你的问题,请参考以下文章
move_uploaded_file() php 函数不适用于多次上传
PHP在使用move_uploaded_file函数移动文件时一直失败
PHP 文件上传之常见问题($_FILES为空,move_uploaded_file()函数报错)