2010-08-11 78 views
1

相同的脚本在localhost中正常工作,但它不在服务器中工作。它抛出一些错误 -无法上传图片在PHP中,权限被拒绝?

Warning: copy(album/6349416.jpg) [function.copy]: failed to open stream: Permission denied in D:\Hosting\6448289\html\upload.php on line 112 

对应的112线是 -

$image_name=$unq.'.'.$extension; 
//the new name will be containing the full path where will be stored (album folder) 
$newname="album/".$image_name; 
$copied = copy($_FILES['image']['tmp_name'], $newname); //112th line 
+0

没有任何理由,为什么你正在使用的不是副本move_uploaded_file? – teemitzitrone 2010-08-11 08:03:32

回答

1

$ NEWNAME应该是一个新的文件完整路径。但是在你的脚本中它是一个相对路径,似乎指向里面的某处/ tmp

+0

我认为$ newname会指向执行脚本的当前文件夹.. – 2010-08-11 06:19:51

+0

表示它应该像'':http:// domain.com/album /' – nectar 2010-08-11 06:20:48

+0

不,它应该像/ home/mysite/WWW /上传/专辑。您可以使用dirname(__ FILE__)来获取当前PHP脚本的目录名称。 – 2010-08-11 06:31:49

0

检查相册文件夹的权限。它应该以6或7结束(读取+写入必须为每个人的权限启用)

+0

我已检查所有权限。 – nectar 2010-08-11 06:21:44

+0

该文件是否已经存在?对目录拥有写权限是不够的。如果覆盖现有文件,则必须具有该文件的写入权限。 – 2010-08-11 13:14:10

0

这可能是一个愚蠢的问题,但你使用的是Windows服务器?

您在"album/".$image_name中使用了正斜杠(unix样式),但错误位置显示为反斜杠(窗口样式)“D:\ Hosting \ 6448289 \ html \ upload.php”。它是否仍然以反斜杠失败,即"album\".$image_name

编辑:我忘了补充 - 你可能需要一个./.\在该位置的前申报其相对于PHP脚本的当前位置

+0

PHP将自动转换/分隔符到\在Windows系统上。 ''album \“。$ image_name'无论如何都会导致语法错误,因为\将转义双引号并导致未终结的字符串。 ''专辑\\“。$ image_name'可以工作,但。 – 2010-08-11 13:12:35