1

何が間違っていたのかわかりませんが、このエラーは私を怒らせました。以下のコードから、「fseek(): 提供された引数は有効なストリーム リソースではありません」というエラーが表示され続けます。

public function _geoip_seek_country($ipnum) {
    $offset = 0;
    for ($depth = 31; $depth >= 0; $depth--) {
        if ($this->flags & $this->GEOIP_MEMORY_CACHE) {
            $enc = mb_internal_encoding();
            mb_internal_encoding('ISO-8859-1');

            $buf = substr($this->memory_buffer,
                2 * $this->record_length * $offset,
                2 * $this->record_length);

            mb_internal_encoding($enc);
        } elseif ($this->flags & $this->GEOIP_SHARED_MEMORY) {
            $buf = @shmop_read ($this->shmid,
                2 * $this->record_length * $offset,
                2 * $this->record_length );
        } else {
      fseek($this->filehandle, 2 * $this->record_length * $offset, SEEK_SET) == 0
                or die("fseek failed");
            $buf = fread($this->filehandle, 2 * $this->record_length);
        }
        $x = array(0,0);
        for ($i = 0; $i < 2; ++$i) {
            for ($j = 0; $j < $this->record_length; ++$j) {
                $x[$i] += ord($buf[$this->record_length * $i + $j]) << ($j * 8);
            }
        }
        if ($ipnum & (1 << $depth)) {
            if ($x[1] >= $this->databaseSegments) {
                return $x[1];
            }
            $offset = $x[1];
        } else {
            if ($x[0] >= $this->databaseSegments) {
                return $x[0];
            }
            $offset = $x[0];
        }
    }
    trigger_error("error traversing database - perhaps it is corrupt?", E_USER_ERROR);
    return false;
}

ファイルは存在し、パーミッションを 777 に設定します。

$this->filehandle = fopen($filename,"rb")) 

はすでに真実です。なぜそれが言い続けるのか分かりません

指定された引数は有効なストリーム リソースではありません

4

1 に答える 1