/php//: Skillnad mellan sidversioner
Admin (diskussion | bidrag) (Skapade sidan med 'php:// php:// — Accessing various I/O streams Description ¶ PHP provides a number of miscellaneous I/O streams that allow access to PHP's own input and output streams, the standard input, output and error file descriptors, in-memory and disk-backed temporary file streams, and filters that can manipulate other file resources as they are read from and written to. php://stdin, php://stdout and php://stderr ¶ php://stdin, php://stdout and php://stderr allow direct acce...') |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
Rad 1: | Rad 1: | ||
== php:// — Åtkomst till olika I/O-strömmar == | |||
php:// — | |||
=== Beskrivning === | |||
PHP | 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 | === php://stdin, php://stdout och php://stderr === | ||
php://stdin, php://stdout | 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 | php://stdin är skrivskyddad, medan php://stdout och php://stderr är skrivbara. | ||
php://input | === php://input === | ||
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 === | ||
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 === | ||
php://fd | php://fd tillåter direkt åtkomst till den angivna fildeskriptorn. Till exempel refererar php://fd/3 till fildeskriptorn 3. | ||
php://memory | === php://memory och php://temp === | ||
php://memory | 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 === | ||
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 | === php://filter parametrar === | ||
{| class="wikitable" | |||
resource=<stream to be filtered> | ! Namn !! Beskrivning | ||
read=<filter list to apply to read chain> | |- | ||
write=<filter list to apply to write chain> | | resource=<stream to be filtered> || Denna parameter är obligatorisk. Den specificerar strömmen som du vill filtrera. | ||
<filter list to apply to both chains> | |- | ||
| read=<filter list to apply to read chain> || Denna parameter är valfri. Ett eller flera filternamn kan anges här, separerade med pipe-tecknet (|). | |||
|- | |||
| write=<filter list to apply to write chain> || Denna parameter är valfri. Ett eller flera filternamn kan anges här, separerade med pipe-tecknet (|). | |||
|- | |||
| <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 === | |||
{| class="wikitable" | |||
! 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. | |||
<pre> | |||
<?php | <?php | ||
// | // Ställ in gränsen till 5 MB. | ||
$fiveMBs = 5 * 1024 * 1024; | $fiveMBs = 5 * 1024 * 1024; | ||
$fp = fopen("php://temp/maxmemory:$fiveMBs", 'r+'); | $fp = fopen("php://temp/maxmemory:$fiveMBs", 'r+'); | ||
Rad 65: | Rad 87: | ||
fputs($fp, "hello\n"); | fputs($fp, "hello\n"); | ||
// | // Läs vad vi har skrivit. | ||
rewind($fp); | rewind($fp); | ||
echo stream_get_contents($fp); | echo stream_get_contents($fp); | ||
?> | ?> | ||
</pre> | |||
'''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. | |||
<pre> | |||
<?php | <?php | ||
/* | /* Detta motsvarar helt enkelt: | ||
readfile("http://www.example.com"); | readfile("http://www.example.com"); | ||
eftersom inga filter faktiskt anges */ | |||
readfile("php://filter/resource=http://www.example.com"); | readfile("php://filter/resource=http://www.example.com"); | ||
?> | ?> | ||
</pre> | |||
'''Exempel #3 php://filter/read=<filter list to apply to read chain>''' | |||
Denna parameter tar ett eller flera filternamn separerade av pipe-tecknet |. | |||
<pre> | |||
<?php | <?php | ||
/* | /* Detta kommer att skriva ut innehållet på | ||
www.example.com | www.example.com helt i versaler */ | ||
readfile("php://filter/read=string.toupper/resource=http://www.example.com"); | 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"); | readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com"); | ||
?> | ?> | ||
</pre> | |||
'''Exempel #4 php://filter/write=<filter list to apply to write chain>''' | |||
Denna parameter tar ett eller flera filternamn separerade av pipe-tecknet |. | |||
<pre> | |||
<?php | <?php | ||
/* | /* Detta kommer att filtrera strängen "Hello World" | ||
genom ROT13-filtret och sedan skriva till | |||
example.txt | example.txt i den nuvarande katalogen */ | ||
file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World"); | file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World"); | ||
?> | ?> | ||
</pre> | |||
php://memory | '''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. | |||
<pre> | |||
<?php | <?php | ||
file_put_contents('php://memory', 'PHP'); | file_put_contents('php://memory', 'PHP'); | ||
echo file_get_contents('php://memory'); // | echo file_get_contents('php://memory'); // skriver ut inget | ||
?> | |||
</pre> | |||
= Sidslut = | = Sidslut = |
Nuvarande version från 1 september 2024 kl. 04.45
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.