/php//
php:// — Åtkomst till olika I/O-strömmar
Beskrivning
PHP erbjuder ett antal olika I/O-strömmar som tillåter åtkomst till PHP:s egna in- och utgångsströmmar, standard in-, ut- och fel-fildeskriptorer, minnes- och diskbaserade tillfälliga filströmmar samt filter som kan manipulera andra filresurser när de läses eller skrivs.
php://stdin, php://stdout och php://stderr
php://stdin, php://stdout och php://stderr tillåter direkt åtkomst till motsvarande in- eller utgångsström för PHP-processen. Strömmen refererar till en duplicerad fildeskriptor, så om du öppnar php://stdin och senare stänger den, stänger du endast din kopia av deskriptorn – själva strömmen som refereras av STDIN påverkas inte. Det rekommenderas att du istället använder konstanterna STDIN, STDOUT och STDERR istället för att manuellt öppna strömmar med dessa omslag.
php://stdin är skrivskyddad, medan php://stdout och php://stderr är skrivbara.
php://input
php://input är en skrivskyddad ström som tillåter dig att läsa rådata från begärans kropp. php://input är inte tillgänglig i POST-begäranden med enctype="multipart/form-data" om alternativet enable_post_data_reading är aktiverat.
php://output
php://output är en skrivbar ström som tillåter dig att skriva till utmatningsbuffertmekanismen på samma sätt som print och echo.
php://fd
php://fd tillåter direkt åtkomst till den angivna fildeskriptorn. Till exempel refererar php://fd/3 till fildeskriptorn 3.
php://memory och php://temp
php://memory och php://temp är skrivbara strömmar som tillåter temporär data att lagras i ett fil-liknande omslag. En skillnad mellan de två är att php://memory alltid lagrar sin data i minnet, medan php://temp kommer att använda en temporär fil när mängden lagrad data når en fördefinierad gräns (standard är 2 MB). Platsen för denna temporära fil bestäms på samma sätt som funktionen sys_get_temp_dir().
Minnesgränsen för php://temp kan styras genom att lägga till /maxmemory:NN, där NN är den maximala mängden data som ska hållas i minnet innan en temporär fil används, i byte.
Varning: Vissa PHP-tillägg kan kräva en standard IO-ström och kan försöka kasta en given ström till en standard IO-ström. Denna kastning kan misslyckas för minnesströmmar eftersom den kräver att C-funktionen fopencookie() är tillgänglig. Denna C-funktion är inte tillgänglig på Windows.
php://filter
php://filter är ett slags meta-omslag som är utformat för att tillåta tillämpning av filter på en ström vid öppning. Detta är användbart med all-in-one-filfunktioner som readfile(), file() och file_get_contents() där det annars inte finns någon möjlighet att tillämpa ett filter på strömmen innan innehållet läses.
php://filter-målet tar följande parametrar som en del av sin sökväg. Flera filterkedjor kan specificeras på en sökväg. Se exemplen för specifika användningar av dessa parametrar.
php://filter parametrar
Namn | Beskrivning |
---|---|
resource=<stream to be filtered> | Denna parameter är obligatorisk. Den specificerar strömmen som du vill filtrera. |
read=<filter list to apply to read chain> | ). |
write=<filter list to apply to write chain> | ). |
<filter list to apply to both chains> | Alla filterlistor som inte är föregångna av read= eller write= kommer att tillämpas på både läs- och skrivkedjorna som är lämpliga. |
Alternativ
Omslagsöversikt (för php://filter, se sammanfattningen av omslaget som filtreras) | Attribut | Stöd |
---|---|---|
Begränsad av allow_url_fopen | Nej | |
Begränsad av allow_url_include | Endast php://input, php://stdin, php://memory och php://temp. | |
Tillåter läsning | Endast php://stdin, php://input, php://fd, php://memory och php://temp. | |
Tillåter skrivning | Endast php://stdout, php://stderr, php://output, php://fd, php://memory och php://temp. | |
Tillåter tillägg | Endast php://stdout, php://stderr, php://output, php://fd, php://memory och php://temp. (Motsvarar skrivning) | |
Tillåter samtidig läsning och skrivning | Endast php://fd, php://memory och php://temp. | |
Stödjer stat() | Nej. Dock stödjer php://memory och php://temp fstat(). | |
Stödjer unlink() | Nej | |
Stödjer rename() | Nej | |
Stödjer mkdir() | Nej | |
Stödjer rmdir() | Nej | |
Stödjer stream_select() | Endast php://stdin, php://stdout, php://stderr, php://fd och php://temp. |
Exempel
Exempel #1 php://temp/maxmemory
Denna valfria parameter tillåter att minnesgränsen ställs in innan php://temp börjar använda en temporär fil.
<?php // Ställ in gränsen till 5 MB. $fiveMBs = 5 * 1024 * 1024; $fp = fopen("php://temp/maxmemory:$fiveMBs", 'r+'); fputs($fp, "hello\n"); // Läs vad vi har skrivit. rewind($fp); echo stream_get_contents($fp); ?>
Exempel #2 php://filter/resource=<stream to be filtered>
Denna parameter måste vara placerad i slutet av din php://filter-specifikation och ska peka på den ström som du vill filtrera.
<?php /* Detta motsvarar helt enkelt: readfile("http://www.example.com"); eftersom inga filter faktiskt anges */ readfile("php://filter/resource=http://www.example.com"); ?>
Exempel #3 php://filter/read=<filter list to apply to read chain>
Denna parameter tar ett eller flera filternamn separerade av pipe-tecknet |.
<?php /* Detta kommer att skriva ut innehållet på www.example.com helt i versaler */ readfile("php://filter/read=string.toupper/resource=http://www.example.com"); /* Detta kommer att göra samma sak som ovan men kommer också att ROT13-koda det */ readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com"); ?>
Exempel #4 php://filter/write=<filter list to apply to write chain>
Denna parameter tar ett eller flera filternamn separerade av pipe-tecknet |.
<?php /* Detta kommer att filtrera strängen "Hello World" genom ROT13-filtret och sedan skriva till example.txt i den nuvarande katalogen */ file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World"); ?>
Exempel #5 php://memory och php://temp är inte återanvändbara
php://memory och php://temp är inte återanvändbara, det vill säga efter att strömmarna har stängts finns det inget sätt att hänvisa till dem igen.
<?php file_put_contents('php://memory', 'PHP'); echo file_get_contents('php://memory'); // skriver ut inget ?>
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/wrappers.http.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.