2010-08-30 109 views
0

我得到這個免費提供的PHP腳本來跟蹤下載統計。簡單來說,它只是計算下載並將其傳遞到日誌文件,而另一個腳本使用該日誌文件顯示前10個列表。所以這正是我需要的,所以我真的很想讓這個腳本工作。但事實並非如此。當然。我在PHP方面的知識有限(但是遇到這個腳本後學到了很多東西!)。據作者說,它已經在類似於我的Apache和php版本上進行了測試,沒有任何問題。所以我一直在猶豫是否真的要改變任何代碼。我試圖chmod日誌文件和/或整個子目錄666和777沒有成功。 我自己的可憐的偵探工作無處可去,我真的嘗試過。所以我訴諸於我通常從未做過的一件事,尋求幫助。PHP平面文件下載計數器

這個連接應該具有以下形式:下面

<a href=http://www.yoursite.com/downloader/download.php?number=1&file=filename.zip> 

的download.php如下:

$number = $_GET['number']; 

$file = $_GET['file']; 


$logfile = "ROOT DIRECTORY PATH/logfile.txt"; 

$array[dir_1] = "URL PATH/DOWNLOADFILESFOLDER"; 

    $download = "dir"."_"."$number"; 

    if ($array[$download]) { 


    $fp = fopen($logfile,'r'); 

    while (!feof($fp)) 

    { 

    $data[] = chop(fgets($fp,4096)); 

    } 

    fclose($fp); 


    $fp = fopen($logfile,"w"); 

    if (flock($fp,LOCK_EX)) { 

    // list and split each filename and number of downloads 

    foreach ($data as $lines){ 
    list($downloads,$filename,$realname) = split("\|",$lines); 


     // check if file already exists and add one more download if it does 

    if ($filename == $file){ 

     $downloads++; 

     } 

     if ($filename <> ""){ 
     fputs($fp,"$downloads|$filename|$realname\r\n"); 

     } 

    } 

    flock($fp,LOCK_UN); 

    } 

    fclose($fp); 




    header("Location: $array[$download]/$file"); 



} 

但是劇本沒有任何意義,我的一個組成部分;它在哪裏獲得文件名和真實名稱,以便它可以放入日誌文件中,前提是文件從未被下載過? list()函數和目錄數組讓我的腦海裏浮現了一些想法。雖然這似乎合乎邏輯。 如果有人遇到一些根本性的錯誤或有一些關於如何繼續下去的提示,這將不勝感激。

PS。我試圖跟蹤pdf文件,如果有幫助。

更新!通過善良的建議,我跑錯誤報告,並得到一個錯誤。錯誤的腳本中有一個錯誤,我刪除了它。我再次運行錯誤檢查,只有關於未定義變量的「Notices」。我將錯誤報告更改爲

error_reporting(E_ALL^E_NOTICE); 

之後,根本沒有錯誤。

+2

你實際上是在實施「根目錄路徑」和「URL路徑」更改爲你的嗎? – KeatsKelleher 2010-08-30 21:45:16

回答

2

你必須改變這些:

$logfile = "ROOT DIRECTORY PATH/logfile.txt"; 
$array[dir_1] = "URL PATH/DOWNLOADFILESFOLDER"; 

您的實際路徑。

下一次,打開錯誤報告,以便您可以知道東西何時拋出錯誤。要做到這一點的方法之一是增加下面一行到你的腳本的頂部:

error_reporting(-1) // will show all errors 

參見:http://php.net/manual/en/function.error-reporting.php

+0

哦,我做到了!我只是在那裏解釋說明,爲了簡單起見, – Xantippa 2010-08-30 21:48:11

+0

@Xant打開錯誤報告(請參閱我的答案)並告訴我們它說了什麼。 – NullUserException 2010-08-30 21:49:00

+0

我收到以下錯誤消息: 解析錯誤:語法錯誤,意外的T_IF,期待','或';'在/afs/su.se/services/www/hosts/www.ne.su.se/pages/ed/downloader/download.php on line 70 這真是有點意外! – Xantippa 2010-08-30 22:05:26