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的权限没那么严重啦

参考技术A 你是在window下跑的吗?window下的话不允许过长的路径,请尝试放短路径和文件名试一下 参考技术B $uploaddir="./cov_img/"; //相册封面所在路径

查看这个的权限和路径是否正确本回答被提问者采纳

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 &lt;username&gt; &lt;folder&gt;【参考方案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()函数报错)

在PHP中,move_uploaded_file将文件上传到一个目录,但无法上传到另一个目录?

PHP move_uploaded_file 权限被拒绝

PHP文件上传move_uploaded_file不起作用