我正在使用这样的脚本:
$path = dirname(__FILE__)."/folder/file.ext"
if(is_readable($path)){
$file = fread(fopen($path,"r"), filesize($path));
}else{
//do something else if file can't be opened
}
令人惊讶的是,它会产生以下错误:
Warning: fread() [function.fread]: Length parameter must be greater than 0
in /nfs/c10/h02/mnt/161920/domains/example.com/html/my-folder/file.php on line 16
我想知道为什么会这样。它只发生在某些服务器上,而在其他服务器上则没问题。成功使用fread
的要求是什么?文件存在于该位置。
答案 0 :(得分:1)
答案 1 :(得分:1)
正如大家所说,filesize可能是0。
根据建议使用file_get_contents
,或者如果您绝对需要/需要使用fread()
,可以使用以下内容在php 5.3 +上解决它:
$path = dirname(__FILE__)."/folder/file.ext"
if(is_readable($path)){
$file = fread(fopen($path,"r"), filesize($path) ?: 1);
}else{
//do something else if file can't be opened
}
注意?: 1
?它被称为ternary operator。也就是说,如果计算结果为true(即大于0),则使用filesize或使用1。
绝对不是最佳做法,但有趣的是指出。