2014-02-24 117 views
-1

我想要一個用戶上傳他的簡歷,該簡歷將被保存到我的服務器上併發送一封包含該鏈接的電子郵件。但由於某種原因文件沒有上傳。請幫忙。該文件沒有上傳到服務器上

這裏是我的代碼:

<?php 
//This function separates the extension from the rest of the file name and returns it 
function findexts ($filename) 
{$filename = strtolower($filename); 
$exts = split("[/\\.]", $filename); 
$n = count($exts)-1; 
$exts = $exts[$n]; 
return $exts;} 

//This applies the function to our file 
$ext = findexts ($_FILES['uploaded']['name']); 

//This line assigns a random number to a variable. 
$ran = rand(); 

//This takes the random number (or timestamp) you generated and adds a . on the end 
$ran2 = $ran."."; 

//This assigns the subdirectory you want to save into... make sure it exists! 
$target_path = "/resume/"; 

//This combines the directory, the random file name, and the extension 
$target_paths = $target_path . $ran2.$ext; 

move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path); 

$file_name="http://www.mydomain.com".$target_paths; 

?> 
+0

檢查文件夾權限?你得到什麼錯誤? – j08691

+0

沒有錯誤顯示。直接向我提供的電子郵件地址發送一封郵件,我在服務器上創建的文件夾顯示爲空,並且你說了什麼權限,我很抱歉,我對此很陌生 – Himani

+0

該文件夾需要來自用戶的寫入權限web服務器運行如下: – j08691

回答

0

除非它是一個窗口(原諒我)中,文件或文件夾的權限是這方面的第一個地方。 Un * x-like系統可以(讀取:非常嚴格)。

的方式,我通常解決這個問題我開發的機器上,就是:

  • 自己添加到Web服務組,使之成爲我的主(如根:$ usermod命令-g Web服務組的用戶名)
  • 將我的用戶和web服務組設置爲所有文件(根目錄webroot:$ chown -R 755 ./*)
  • 將775應用於所有文件和文件夾(項目webroot中的root:$ chmod -R 775 ./*)

此作品適用於開發環境。我不能說我完全在現場環境中推薦它。在現場環境中更安全的是:webservice-user所擁有的文件夾:webservice-group(基於debian-based:www-data:www-data),mod應該是755(webservice具有完全訪問權限,其餘只能執行並閱讀)。

0

沒有此文件類型的驗證,沒有file_exist等

如果你想隨機文件名,我要麼校驗文件內容並使用它作爲一個文件名,或有一個循環(而file_exists => gen_random)。雖然這會慢得多,所以您應該考慮使用數據庫作爲跟蹤文件/文件所有者的方式。

那就是說,你必須檢查上傳的內容,這樣人們纔不會上傳惡意腳本到你的網頁。您還應該使用錯誤處理。

如果您出於某種原因希望運行此腳本 - 可以回顯變量。 你也可以這樣做:if(move_uploaded ...否則...(所以你知道它在哪裏失敗,如果失敗)

+0

謝謝你的幫助!我改變了寫權限,但是它仍然沒有將文件上傳到該文件夾​​,我也添加了if語句來處理錯誤,並且顯示錯誤信息,當我嘗試上傳時。 – Himani