2016-02-25 93 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

剛剛那樣做,仍然是同樣的問題。 –