PHP fread() 其他长度参数而不是文件大小

问题描述


我试图让 PHP 读取一个文件到最后,它工作得很好,除非文件为空。然后它抛出一个错误说:
 Uncaught ValueError: fread(): Argument #2 ($length) must be greater than 0`
`strlen()`does not work in this case.

是否有一些关于长度的论据,例如“阅读那里的所有内容,如果它为空,则忽略它”?这是PHP

$data_file_read = fopen("data.txt","r");
$alldata = fread($data_file_read,filesize("data.txt"));
fclose($data_file_read);

解决方法

将文件的长度放入一个变量中并检查它的长度

$filename = "data.txt";
//
// Check file exists first
//
if (file_exists($filename) === true) {
   //
   // Get file length and check if it is > 0
   //
   $dataLength = filesize($filename);

   if ($dataLength > 0) {
      //
      // Finally read the data
      //
      $data_file_read = fopen($filename,"r");
      $alldata = fread($data_file_read,$dataLength);
      fclose($data_file_read);
   }
}