2016-02-25 95 views
0

基本上,该方法每次返回的都是假的,我试图改变tmp的文件夹,并在/上传给PHP写权限的文件夹move_uploaded_file()以返回false

PHP脚本:

<?php 
$uploadfile = $_FILES['userfile']['name']; 

echo '<pre>'; 
if (move_uploaded_file($_FILES['userfile']['tmp_name'], "uploads/$uploadfile")) { 
    echo "Uploaded.\n"; 
} else { 
    echo "Not uploaded.\n"; 
} 
echo 'Here is some more debugging info:'; 
print_r($_FILES); 

print "</pre>"; 

?> 

如何我给的权限:https://gyazo.com/89a706adfefea2a2edf090e7cc11cf66

在HTML文件中的表格:

<form method="POST" action="savepic.php" enctype="multipart/form-data"> 
    <input class="file" type="file" name="userfile"> 
    <input type="submit" value="Upload"> 
    <p>Not available...</p> 
</form> 

日志中的错误给了我两个:

PHP的警告:move_uploaded_file(上传/ 65 wat.jpg):未能打开流:允许使用C否认:\的Inetpub \ wwwroot的\ UPT \测试\ savepic。 php on line 5

PHP Warning:move_uploaded_file():无法在C:\ inetpub \ wwwroot \ UPT \ test中将'C:\ Windows \ Temp \ php8F38.tmp'移动到'uploads/65 wat.jpg' \ savepic.php上线5

所有帮助非常感谢。

+0

检查源和目标文件\目录权限 – 2016-02-25 21:39:06

+0

那么我给了“IIS_IUSRS”用户完全控制两个文件夹,源和目标目录,它仍然给我相同的错误。 –

回答

0

所以我终于发现真正的问题。我试图上传到的文件夹是由我自己的用户创建的,这意味着它不属于IIS(This文章对确定文件非常有帮助)。

因此,我不得不将文件夹的所有者更改为IIS_IUSRS,并在完成后,PHP脚本工作。

有关更改文件夹所有者的详细信息,可以在前面提到的文章中完全描述。

+1

所以你的答案是做我的建议。有趣。 – Iwnnay

+0

@Iwnnay不完全是这样,因为当按照您的指示进行操作时,我正在搞乱用户的权限,而不是用文件夹的所有权。然后,所有权可以被视为许可。取决于观点。 –

0

看起来很不寻常,但是您可能没有'C:\ Windows \ Temp'权限。或者你的服务器可能没有权限。有两种方法来解决这个问题:

  1. 更改“upload_tmp_dir”在php.ini文件中设置为您或服务器确实有权限

  2. 目录查找Temp目录和变化它的权限与上传目录的方式相同。

+0

我试着改变'upload_tmp_dir',但它似乎不工作。你能给我举个例子吗? –

+0

您在更改php.ini文件后是否重新启动IIS服务器? – Iwnnay

+0

刚刚那样做,仍然是同样的问题。 –