PHP fread() 期望参数 1 是一个资源,布尔值给定

PHP fread() expects parameter 1 to be a resource, boolean given

提问人:Alex 提问时间:2/6/2018 最后编辑:lotfioAlex 更新时间:2/6/2018 访问量:2266

问:

我有这个错误,本地服务器上的东西工作正常,但是现在当我将文件上传到主机时,我收到这些错误。

  • fread() 期望参数 1 是 resource,布尔值给定
  • fseek() 期望参数 1 是资源,布尔值给定
  • feof() 期望参数 1 是资源,布尔值给定

需要一些帮助..

PHP 脚本:

public function getDuration($use_cbr_estimate=false)
    {
        $fd = fopen($this->filename, "rb");

        $duration=0;
        $block = fread($fd, 100);
        $offset = $this->skipID3v2Tag($block);
        fseek($fd, $offset, SEEK_SET);
        while (!feof($fd))
        {
            $block = fread($fd, 10);
            if (strlen($block)<10) { break; }
            //în căutarea pentru 1111 1111 111 (biți de sincronizare a cadrelor)
            else if ($block[0]=="\xff" && (ord($block[1])&0xe0) )
            {
                $info = self::parseFrameHeader(substr($block, 0, 4));
                if (empty($info['Framesize'])) { return $duration; } //unele fișiere mp3 corupte
                fseek($fd, $info['Framesize']-10, SEEK_CUR);
                $duration += ( $info['Samples'] / $info['Sampling Rate'] );
            }
            else if (substr($block, 0, 3)=='TAG')
            {
                fseek($fd, 128-10, SEEK_CUR);//sărim peste dimensiunea etichetei id3v1
            }
            else
            {
                fseek($fd, -9, SEEK_CUR);
            }
            if ($use_cbr_estimate && !empty($info))
            { 
                return $this->estimateDuration($info['Bitrate'],$offset); 
            }
        }
        return round($duration);
    }
php fopen fseek feof

评论

1赞 Don't Panic 2/6/2018
如果是布尔值,则表示无法打开文件。(不过,从这段代码中看不出原因。$fd
0赞 Eric 2/6/2018
您是否检查过文件是否实际打开???你检查过文件吗?fopen
0赞 Eric 2/6/2018
调试是程序员工作的一部分。注释出来后一直到 .然后只需检查 的值。$duration=0return round($duration)$fd
1赞 Don't Panic 2/6/2018
@Eric文件无法打开。错误已经告诉我们这一点。将布尔值传递给 fread 等的唯一方法是 fopen 失败并返回 false。
1赞 Ibu 2/6/2018
在跑步前做一个好主意,以确保你的路径是正确的。打印文件路径,您将看到您的问题file_exists()fopen()

答: 暂无答案