2010-11-19 251 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"; 
} 
相关问题