/rar//

Från Wiki.linux.se
Version från den 1 september 2024 kl. 05.18 av Admin (diskussion | bidrag) (→‎Alternativ)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

rar:// — RAR

Beskrivning

Omslaget använder den URL-kodade sökvägen till RAR-arkivet (relativ eller absolut), ett valfritt asterisktecken (*), ett valfritt nummertecken (#) och ett valfritt URL-kodat postnamn, som lagrats i arkivet. Att ange ett postnamn kräver nummertecknet; ett ledande snedstreck i postnamnet är valfritt.

Detta omslag kan öppna både filer och kataloger. När man öppnar kataloger, tvingar asterisktecknet att katalogposternas namn returneras okodade. Om det inte anges, kommer de att returneras URL-kodade – anledningen till detta är att låta omslaget användas korrekt med inbyggd funktionalitet som RecursiveDirectoryIterator i närvaro av filnamn som verkar vara URL-kodad data.

Om nummertecknet och postnamnsdelen inte inkluderas, kommer arkivets rot att visas. Detta skiljer sig från vanliga kataloger genom att den resulterande strömmen inte kommer att innehålla information såsom ändringstid, eftersom rotkatalogen inte lagras som en individuell post i arkivet. Användningen av omslaget med RecursiveDirectoryIterator kräver att nummertecknet inkluderas i URL:en när man får åtkomst till roten, så att barnens URL:er kan konstrueras korrekt.

Mall:Note

rar:// är tillgängligt sedan PECL rar 3.0.0

Användning

rar://<url-kodade arkivnamn>[*][#[<url-kodat postnamn>]]

Alternativ

Attribut !! Stöds
Begränsad av allow_url_fopen Nej
Begränsad av allow_url_include Nej
Tillåter läsning Ja
Tillåter skrivning Nej
Tillåter tillägg Nej
Tillåter samtidig läsning och skrivning Nej
Stödjer stat() Ja
Stödjer unlink() Nej
Stödjer rename() Nej
Stödjer mkdir() Nej
Stödjer rmdir() Nej

Kontextalternativ

Namn Användning Standard
open_password Lösenordet som används för att kryptera arkivets rubriker, om sådana finns. WinRAR krypterar alla filer med samma lösenord som rubrikens lösenord när detta är närvarande, så för arkiv med krypterade rubriker kommer file_password att ignoreras.
file_password Lösenordet som används för att kryptera en fil, om sådant finns. Om även rubrikerna är krypterade, kommer detta alternativ att ignoreras till förmån för open_password. Anledningen till att det finns två alternativ är att täcka möjligheten att stödja arkiv med olika rubrik- och fil-lösenord, om sådana arkiv skulle uppstå. Observera att om arkivet inte har sina rubriker krypterade, kommer open_password att ignoreras och detta alternativ måste istället användas.
volume_callback En callback för att bestämma sökvägen till saknade volymer. Se RarArchive::open för mer information.

Exempel

Exempel #1 Gå igenom ett RAR-arkiv

<?php

class MyRecDirIt extends RecursiveDirectoryIterator {
    function current() {
        return rawurldecode($this->getSubPathName()) .
            (is_dir(parent::current())?" [DIR]":"");
    }
}

$f = "rar://" . rawurlencode(dirname(__FILE__)) .
    DIRECTORY_SEPARATOR . 'dirs_and_extra_headers.rar#';

$it = new RecursiveTreeIterator(new MyRecDirIt($f));

foreach ($it as $s) {
    echo $s, "\n";
}
?>

Ovanstående exempel kommer att ge något liknande:

|-allow_everyone_ni [DIR]
|-file1.txt
|-file2_אּ.txt
|-with_streams.txt
\-אּ [DIR]
  |-אּ\%2Fempty%2E [DIR]
  | \-אּ\%2Fempty%2E\file7.txt
  |-אּ\empty [DIR]
  |-אּ\file3.txt
  |-אּ\file4_אּ.txt
  \-אּ\אּ_2 [DIR]
    |-אּ\אּ_2\file5.txt
    \-אּ\אּ_2\file6_אּ.txt

Exempel #2 Öppna en krypterad fil (rubrikkryptering)

<?php
$stream = fopen("rar://" .
    rawurlencode(dirname(__FILE__)) . DIRECTORY_SEPARATOR .
    'encrypted_headers.rar' . '#encfile1.txt', "r", false,
    stream_context_create(
        array(
            'rar' =>
                array(
                    'open_password' => 'samplepassword'
                )
            )
        )
    );
var_dump(stream_get_contents($stream));
/* Skapelse- och sista åtkomstdatum är opt-in i WinRAR, därför har de flesta
 * filer dem inte */
var_dump(fstat($stream));
?>

Ovanstående exempel kommer att ge något liknande:

string(26) "Encrypted file 1 contents."
Array
(
    [0] => 0
    [1] => 0
    [2] => 33206
    [3] => 1
    [4] => 0
    [5] => 0
    [6] => 0
    [7] => 26
    [8] => 0
    [9] => 1259550052
    [10] => 0
    [11] => -1
    [12] => -1
    [dev] => 0
    [ino] => 0
    [mode] => 33206
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 0
    [size] => 26
    [atime] => 0
    [mtime] => 1259550052
    [ctime] => 0
    [blksize] => -1
    [blocks] => -1
)

Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/wrappers.rar.php
PHP
Språkreferens
Stödda Protokoll och Inslagningar


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webserver.