2012-09-02 128 views
0

我發現這個腳本在線試圖改變它,但現在它不工作,我只添加了2行和它看起來的文件夾。上傳腳本問題

這裏是腳本:

<?PHP 
/* 
Silentum Uploader v1.6 
Modified July 8, 2012 
uploader.php copyright 2005-2012 HyperSilence 
*/ 

// Begin options 

$file_extensions = array(".mp3"); // Add or delete the file extensions you want to allow Sample: (".mp3", ".gif", ".htm", ".html", ".jpg", ".png", ".txt") 
$file_extensions_list = ".mp3"; // Type the same as above, without the quotation marks Sample: ".doc, .gif, .htm, .html, .jpg, .png, .txt" 
$max_length = 30; // The maximum character length for a file name 
$maximum_file_size = 10000000; // In bytes 
$upload_log_file = "upload_log.txt"; // The log file you want to use 

// End options 
// If you're using a different folder name for uploaded files other than "files", change both occurrences of "files" on lines 27 and 28 below 

$folder_directory = "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["PHP_SELF"]); 
$message = ""; 
$set_chmod = 0; 
$site_uri = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]; 
$upload_directory = "/uploads"; 
$upload_uri = $folder_directory."/uploads/"; 

$folder_name_length = strlen($upload_directory); 

if($_FILES["userfile"]) { 
$resource = fopen($upload_log_file,"a"); 
fwrite($resource,date("F d, Y/h:i:sa")." - ".$_FILES["userfile"]["name"]." " 
.$_FILES["userfile"]["type"]." uploaded by ".$_SERVER["REMOTE_ADDR"]."\n"); 
fclose($resource); 

$file_type = $_FILES["userfile"]["type"]; 
$file_name = $_FILES["userfile"]["name"]; 
$file_ext = strtolower(substr($file_name,strrpos($file_name,"."))); 
@chmod($upload_uri."".$file_name, 0755); 
if($_FILES["userfile"]["size"] > $maximum_file_size) { 
$message = "ERROR: File size cannot be over ".$maximum_file_size." bytes."; 
} 

elseif($file_name == "") $message = "ERROR: Please select a file to upload."; 
elseif(file_exists($upload_directory.$file_name)) $message = "ERROR: A file with that name already exists."; 
elseif(strlen($file_name) > $max_length) $message = "ERROR: The maximum length for a file name is ".$max_length." characters."; 
elseif(!preg_match("/^[A-Z0-9_.\- ]+$/i",$file_name)) $message = "ERROR: Your file name contains invalid characters."; 
elseif(!in_array($file_ext, $file_extensions)) $message = "ERROR: <u>$file_ext</u> is not an allowed file extension."; 
else $message = upload_file($upload_directory, $upload_uri); 
header("Location: $site_uri?message={$message}"); 
} 

elseif(!$_FILES["userfile"]); 
else $message = "ERROR: Invalid file specified."; 

$open = opendir($upload_directory); 
$uploaded_files = ""; 
while($file = readdir($open)) { 
if(!is_dir($file) && !is_link($file)) { 
$uploaded_files .= "  <tr> 
      <td style=\"background: #fff; color: #000; text-align: left\"><a href=\"$upload_directory$file\" title=\"$file (".filesize($upload_directory.$file)." bytes)\">".$file."</a> (".filesize($upload_directory.$file)." bytes)</td> 
     </tr> 
     <tr> 
      <td style=\"background: #eee; color: #000; text-align: left; text-indent: 20px\">Uploaded <b>".date("F d, Y/h:ia", filemtime($upload_directory.$file))."</b></td>"; 
$uploaded_files .=" 
     </tr> 
"; 
} 
} 

function upload_file($upload_directory, $upload_uri) { 
$mp3_name=substr($file_name,0,-4); 
$mp3 = md5($mp3_name.rand().mktime()).".mp3"; 
$file_name = $mp3; 
//$file_name = md5($_FILES["userfile"]["name"].rand()).".mp3"; 
//$file_name = str_replace(" ","_",$file_name); 
$file_path = $upload_directory.$file_name; 
$temporary = $_FILES["userfile"]["tmp_name"]; 

$result = move_uploaded_file($temporary, $file_path); 
if(!chmod($file_path,0777)) 
$message = "ERROR: A folder to place the files was not found, or the files need to be CHMODed to 777."; 
else $message = ($result)?"File has been uploaded." : "An error has occurred."; 
return $message; 
} 
?> 

我加入了部分是這樣的:

$mp3_name=substr($file_name,0,-4); 
$mp3 = md5($mp3_name.rand().mktime()).".mp3"; 

這不應該搞砸了劇本,我只是想使它更安全。

我得到的錯誤是:

ERROR: A folder to place the files was not found, or the files need to be CHMODed to 777. I did change the folder to 0777 and it is still not working.

+0

你有沒有試過讓'$ upload_directory'和'$ upload_directory'都以斜槓結尾,或者兩者都不以斜槓結尾?現在一個沒有但另一個沒有。 – j08691

回答

0

我建議只是chmod()之前做的變量$file_pathecho。我有一種感覺,它不是指向你認爲的道路。

我在添加的行中看到的一個錯誤是您正在引用upload_file函數中的$file_name變量。問題在於該變量不存在於該函數內部,因此未設置。

+0

好吧,你是正確的路徑,我解決了這個問題。它仍然給我的chmod錯誤,而不是把文件放在服務器上。我錯過了什麼? –