2013-04-23 33 views
1
<?php 

if (isset($_FILES['datei'])) 
{ 
move_uploaded_file($_FILES['datei']['tmp_name'], 'upload/'.$_FILES['datei']['name']); 

echo "Filee successfully uploaded."; 

chmod($_FILES["datei"]["name"], 777); 

echo "<p> Chmod successfully set!<br>"; 
} 

?> 

上传作品,但使用chmod未设置。任何人都可以帮忙并检查代码吗?PHP的一套搭配chmod后成功上传?

+0

你运行Apache作为sudoer? – 2013-04-23 19:21:13

回答

4

你需要有你的文件的绝对路径。 例如:

chmod("/var/www/files/uploads/" . $_FILES["datei"]["name"] . ".jpg", 0777) 

确保文件位置确实存在。便宜的和肮脏的方式做到这一点:

if(!file_exists("/var/www/files/uploads/" . $_FILES["datei"]["name"] . ".jpg")) { 
    die("File not found with path: /var/www/files/uploads/" . $_FILES["datei"]["name"] . ".jpg"); 
} 

编辑:另外,在Aquillo答案,应该是0777

+0

谢谢,所有的船员都为我工作,并感谢与0777权限的建议。 – 2013-04-23 19:28:10

0

你应该设置使用chmod为

chmod($_FILES["datei"]["name"], 0777); 

你可以阅读更多关于它here

+0

运行Apache与easyscp不是root。 0777并没有改变的权限。 – 2013-04-23 19:23:11

+0

可能是由于多个错误。 A)使用十进制而不是八进制。 B)你移动了文件,但路径似乎没有相应设置(如其他人提到的)。 – Aquillo 2013-04-23 19:27:37

0

您将文件移动到'upload/'.$_FILES['datei']['name']但文件模式$_FILES['datei']['name']。请注意,您错过了`upload /'。更改chmod命令:

chmod('upload/'.$_FILES['datei']['name'], 0777); 
+0

感谢它的工作 – 2013-04-23 19:32:35

0

你需要用一个零(0)的前缀模式,所以

mode should be 0777 
chmod($_FILES["datei"]["name"], 0777); //correct way of mode