警告:fread():Length参数必须大于0

时间:2015-06-11 11:37:00

标签: php

我想用自己的代码创建一个带有许可证的系统,但是给了我一个错误

代码是这样的并且在lic.txt中是相同的1234567,有什么问题?

这是错误,如果我把@在fread dosent前面显示错误但是没有打开文件

  

警告:fread():在第7行的/home/u422978792/public_html/platforma/license/index.php中,长度参数必须大于0       许可证密钥无效

        <?php



    $fp = fopen("http://platforma.dar-project.org/license/lic.txt", "r");
    stream_set_timeout($fp, 10);
    $license = fread($fp, filesize($filename));
    fclose($fp);

    if ($license == "1234567") {

    echo "Your license key is valid";

    } else {

    die("Invalid license key");
    }

    ?>

6 个答案:

答案 0 :(得分:4)

在使用if(filesize($my_file) > 0)之前,您需要检查文件大小fread

例如:

<?php

$my_file = 'list.txt';
$handle = fopen($my_file, 'r');
$data = '';
if(filesize($my_file) > 0)
    $data = fread($handle,filesize($my_file));
//---
echo $data;
//---
fclose($handle);

?>

答案 1 :(得分:0)

背后有一个原因
  

警告:fread():长度参数必须大于0

您的文件lic.txt应为空。因此,fread()无法从文件中读取任何内容。

因此您的情况会导致回显“无效的许可证密钥”。

答案 2 :(得分:0)

$filename未定义。这样做:

$filename = "lic.txt";

不要忘记附加网址。我建议你把它作为一个不同的变量。

答案 3 :(得分:0)

如果文件不存在(可能是错误拼写或格式错误的URL),或者文件大小为0字节,PHP将返回警告和/或错误。

这是一个小函数,用于验证并返回字符串中的文件内容,或者返回“-1”,在这种情况下,您知道在阅读时出现问题。

$file_content = ReadtextFile( "file.txt" ); // caller


function ReadtextFile($FileName)
  {
  if (file_exists($FileName) )
    {
    $file_size = filesize($FileName);
    if ($file_size == 0) return "";
    }
  else return "-1";

  if (!$fp = fopen($FileName, "r")) return "-1";

  $s01 = fread($fp, filesize($FileName));
  fclose($fp);

  return $s01;
  }

答案 4 :(得分:0)

一个建议,我在运行opencart网站时遇到了这个问题, 我的解决方案是增加域的磁盘大小。或从域Cpanel的文件管理器中删除不必要的项目。

希望会有所帮助

答案 5 :(得分:0)

如果文件不存在,PHP将返回警告和/或错误,这是代码。

<?php
if(file_exists("webdictionary.txt"))
{
$myfile = fopen("webdictionary.txt", "r") or 
die("Unable to open file!");
$len =filesize("webdictionary.txt");
echo "File content lenths:- $len .<br>";
echo "file containt.<br>";
for ($i=0;$i<$len;$i++)
{
echo fgetc($myfile);
}
echo "<br>";
fclose($myfile);
echo "$myfile";
}
else 
{
return -1;  
}

?>