2010-11-19 248 views
3

我有跟的1and1託管的網站 - 誰是沒用的!由於某些原因,他們提供的備份腳本不再有效,他們無法爲我提供答案!所以,我想我會寫我自己,這是我的代碼:警告:FREAD()[function.fread]:長度參數必須大於0

if (file_exists('backupfile.sql')){ 

$FP = fopen ('backupfile.sql', 'r'); 
$READ = fread ($FP, filesize ('backupfile.sql')); 
$READ = explode (";\n", $READ); 

foreach ($READ AS $RED) 
{ 
    mysql_query ($RED); 
} 

    echo 'Done'; 
}else{ 
    echo "no file"; 
} 

但是這給了我下面的錯誤

Warning: fread() [function.fread]: Length parameter must be greater than 0 

如果我把FREAD的@盈的腳本不錯誤但它不執行備份。

+0

我認爲你的文件無法打開(錯誤的路徑,權限)。你應該測試是否($ FP){...} – thedev 2010-11-19 14:46:29

回答

3

嗯......從錯誤消息我的猜測是,backupfile.sql是空的。因此,fread()無法從中讀取任何內容。

+0

@Mike「寫入文件」是什麼意思?你在哪裏寫東西? – 2010-11-19 15:00:16

+0

我已經意識到我的代碼出了什麼問題,對不起,我錯過了另一個功能的大塊 - 謝謝你的幫助 – 2010-11-19 15:03:51

1
filesize ('backupfile.sql') 

沒有給你一個文件大小,請嘗試放入文件的完整路徑,也要確保PHP有權限讀取文件。

編輯:您可以使用is_readable()來測試,如果該文件可以被讀取

1

使用fread時,您必須指定最大讀取大小。這表明它認爲你的文件大小爲0.嘗試使用文件,而不是因爲它是一個本地文件,所有...

if (file_exists('backupfile.sql')){ 

$READ = file('backupfile.sql'); 

foreach ($READ AS $RED) 
{ 
    mysql_query ($RED); 
} 

    echo 'Done'; 
}else{ 
    echo "no file"; 
} 
相關問題