2011-08-16 106 views
0

我正在寫一個PHP腳本,用於在服務器上進行文件上傳。並且代碼如下..move_uploaded_file()不起作用

$target_path = "uploaded_images/"; 
$target_path = $target_path . basename($_FILES['image']['name']); 
if(move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) { 

    echo "The file ". basename($_FILES['image']['name']). 
     " has been uploaded"; 
    } else{ 
    echo "There was an error uploading the file, please try again!"; 
} 

但功能move_uploaded_file()以不工作,它提供了以下錯誤..

Warning: move_uploaded_file(uploaded_images/Mordent.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied 


Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpOWVz7o' to 'uploaded_images/Mordent.jpg' 

我已經檢查的所有permisions的文件夾,甚至php.ini中的安全模式已關閉。

請幫助我,我需要這個緊急完成。

回答

3

此處不要使用相對路徑名(uploaded_images/Mordent.jpg)。 PHP的工作目錄(它將用於將相對路徑轉變爲絕對路徑)並不總是很明顯。

如果你想將圖像移動到該目錄是在相同的目錄中的腳本,定義$target_path像:

$target_path = __DIR__ . '/uploaded_images/'; 

__DIR__部分給你的絕對路徑的目錄你當前的腳本是在那裏,然後你追加「相對」的部分。

+0

此答案以前使用'dirname(__ FILE __)'。自PHP 5.3以來,較短的'__DIR__'可用,並且完全相同。 –

1

你的代碼是完全沒有問題......只是改變你在哪裏移動上傳的文件

0777一樣讀的所有權限的目錄的權限和寫 你可以做手工或通過PHP更改