2011-08-10 161 views
3

我在媒體服務器中安裝了wordpress,並發現無法上傳文件。嘗試幾種解決方案後,決定用簡單的腳本複製問題(http://pastie.org/2349720)。文件上傳不起作用

<?php 
if($_FILES) 
     print_r($_FILES); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/png") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 200000)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 

    if (file_exists("uploads/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else if (!file_exists($_FILES["file"]["tmp_name"])) 
     { 
     echo 'temp file doesn\'t exists'; 
     } 
    else 
     { 
     $uploaded=move_uploaded_file($_FILES["file"]["tmp_name"], 
     $_FILES["file"]["name"]); 
     if($uploaded) 
     echo "Stored in: " . "uploads/" . $_FILES["file"]["name"]; 
     else 
     echo "fallo la carga del archivo"; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
?> 

<html> 
<body> 

<form action="" method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

</body> 
</html> 

貌似move_upload_file()沒有警告或錯誤時返回false,看着PHP文件中,發現了這個

如果文件名不是有效的上傳文件,那麼不會發生動作,和 move_uploaded_file()將返回FALSE。

我已選中並且在嘗試移動文件之前文件上載不會報告任何錯誤和臨時文件。已經在文件夾中設置了777權限,但仍然沒有任何運氣,關於什麼可能導致此行爲以及如何解決它的任何想法?

謝謝。

+1

設置'error_reporting(E_ALL);'在你的代碼之前,看看錯誤/警告 –

回答

0

原來,我禁用了fastCGI,我剛剛啓用,事情按預期工作。謝謝你的幫助。

0

嘗試絕對路徑爲move_uploaded_file()

+0

試過這個,沒有用。 – kumiau

1

目標是什麼給你:

$_FILES[...]['error'] 

如果它不給你零,你可以查閱一下放在這裏錯:http://php.net/manual/en/features.file-upload.errors.php

如果確實如此,請確保您的文件夾所在的文件夾可由PHP訪問。您可以嘗試運行此命令:

sudo -s -u [php_user] 
cd [destination_directory] 

檢查您是否可以訪問目錄=)!如果目的地是不可寫

+0

$ _FILES ['error']在我所有的上傳測試中都是0. 我用apache用戶登錄並且能夠將文件複製到文件夾。 – kumiau

1

move_uploaded_file也將失敗。根文件夾是否可寫(我問,因爲在移動文件時沒有將上傳文件夾添加到文件名中)。我知道你提到你的權限設置爲777,但是,對於上傳目錄或應用程序在整個文件夾

1

要檢查在某些目錄是否存在目的地,然後複製源另一個目錄:

if (file_exists("uploads/" . $_FILES["file"]["name"])) 
... 
$uploaded=move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]); 
0

檢查,如果ü可以達到d目錄,有一個在刪除它在臨時文件夾,因爲它會被自動移動沒有必要,目標目的地仍是d文件中。那麼你爲什麼不嘗試移動到另一個目的地

0

我不知道這是否可以幫助,但我在幾個小時前發現了這個問題,問題是我的文件夾的寫權限(我沒有自己的服務器I正在制定)和我一起工作的人的反應是

的「你的」文件夾必須由用戶運行Apache(www數據),這可以通過將文件夾可寫或完成寫將「您要放置文件的位置」文件夾設置爲由www-data組擁有,並使其成組可寫。