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 より大きい必要があります...

$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 に答える