0
    log_email("email to: " . $to . " at: " . $time);
}

function log_email($message){
    $dir = dirname(__FILE__);
    $filename = $dir . "/logs/email_log.txt";       
        echo $filename;

    if(is_readable($filename)){        
        $handle = fopen($filename, "w+");
        $contents = fread($handle, filesize($filename));
        fwrite($handle, $message . "\n" . $contents);
        fclose($handle); 
    }else{
        echo 'The file is not readable.';
    }
}

该文件具有 777 访问权限,该文件包含一些文本。我收到一条警告说:警告:fread():长度参数必须大于 0 in ...

$contents 变量最终什么都不包含?有任何想法吗?目录必须正确,因为如果我删除文件,我的 is_readable 会返回 false。

4

1 回答 1

4

当您最初使用此行打开文件时,您正在截断文件。

$handle = fopen($filename, "w+");

因此,在触发该警告时,大小将为零。

你可能应该做这样的事情:

function log_email($message){
    $dir = dirname(__FILE__);
    $filename = $dir . "/logs/email_log.txt";       
        echo $filename;

    if(is_readable($filename)){        
        // This will append to the file without destroying its contents
        $handle = fopen($filename, "a+"); 
        fwrite($handle, $message . "\n");
        fclose($handle); 
    }else{
        echo 'The file is not readable.';
    }
}
于 2012-11-28T15:23:24.643 回答