【问题标题】:PHP fread not returning stringPHP fread不返回字符串
【发布时间】:2012-11-28 15:06:41
【问题描述】:
    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。

【问题讨论】:

  • var_dump(filesize($filename)); 显示什么?
  • 文件内容为:"email to: ************************* at: 28/11/ 2012 年下午 3:05:48"

标签: php logging fread


【解决方案1】:

当您最初使用此行打开文件时,您是 truncating

$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.';
    }
}

【讨论】:

    猜你喜欢
    • 2017-06-28
    • 1970-01-01
    • 2010-11-11
    • 2019-07-11
    • 2017-09-04
    • 2014-02-09
    • 2011-12-04
    • 2012-05-07
    • 2014-11-30
    相关资源
    最近更新 更多