php://

php://Çeşitli G/Ç akımlarına erişim

Açıklama

PHP, PHP'nin kendi girdi ve çıktı akımlarına, standart girdi, çıktı ve hata dosya tanıtıcılarına, bellek içi ve disk destekli geçici dosya akımlarına ve diğer dosya kaynaklarını okundukları ve yazıldıkları gibi işleyebilen süzgeçlere erişime izin veren bir dizi G/Ç akımı sağlar.

php://stdin, php://stdout ve php://stderr

php://stdin, php://stdout ve php://stderr, PHP sürecinin karşılık gelen girdi veya çıktı akımına doğrudan erişime izin verir. Akım, bir kopya dosya tanıtıcısına başvurur, bu nedenle php://stdin'i açar ve daha sonra kapatırsanız, yalnızca tanıtıcı kopyanızı kapatırsınız; STDIN içindeki gerçek akım etkilenmez. Bu sarmalayıcıları kullanarak akımları elle açmak yerine basitçe STDIN, STDOUT ve STDERR sabitlerini kullanmanız önerilir.

php://stdin salt-okunur, php://stdout ve php://stderr ise salt-yazılırdır.

php://input

php://input, istek gövdesinden ham verileri okumanıza izin veren salt okunur bir akımdır. enable_post_data_reading seçeneği etkinse php://input akımı, enctype="multipart/form-data" ile kullanılamaz.

php://output

php://output, çıktı tamponuna print ve echo gibi yazmanıza izin veren salt-yazılır bir akımdır.

php://fd

php://fd, verilen dosya tanıtıcısına doğrudan erişime izin verir. Örneğin php://fd/3, dosya tanıtıcı 3'ü ifade eder.

php://memory ve php://temp

php://memory ve php://temp, geçici verilerin dosya benzeri bir sarmalayıcıda depolanmasına izin veren okuma-yazma akımlarıdır. İkisi arasındaki tek fark, php://memory akımının verilerini her zaman bellekte depolamasıdır, oysa php://temp, bellekte depolanan veri miktarı önceden tanımlanmış bir sınıra ulaştığında (öntanımlı değer 2 MB'dir) geçici bir dosya kullanır. Bu geçici dosyanın konumu, sys_get_temp_dir() işlevindeki gibi belirlenir.

php://temp bellek sınırı, /maxmemory:NN eklenerek denetlenebilir, burada NN, bayt cinsinden, geçici bir dosya kullanmadan önce bellekte saklanacak azami veri miktarıdır.

Dikkat

Bazı PHP eklentileri standart G/Ç akımı gerektirebilir ve belirli bir akımı standart G/Ç akımına dönüştürmeye çalışabilir. Bu dönüşüm C fopencookie() işlevini gerektirdiğinden bellek akımlarında başarısız olabilir. Bu C işlevi Windows'ta mevcut değildir.

php://filter

php://filter, açılış anında süzgeçlerin bir akıma uygulanmasını sağlamak için tasarlanmış bir meta sarmalayıcı çeşididir. Bu, içerikler okunmadan önce akışa başka türlü süzgeç uygulama imkanının olmadığı yerlerde, readfile(), file() ve file_get_contents() gibi hepsi bir arada dosya işlevlerinde kullanışlıdır.

php://filter hedefi, yolunun bir parçası olarak aşağıdaki seçenekleri alır. Tek bir yolda birden çok süzgeç zinciri belirtilebilir. Lütfen bu seeneklerin kullanımıyla ilgili ayrıntılar için örneklere bakın.

php://filter seçenekleri
SeçenekAçıklama
resource=<süzülecek akım> Bu seçenek gereklidir. Süzülecek akımı belirtir.
read=<okuma zincirine uygulanacak süzgeç listesi> Bu seçenek isteğe bağlıdır. Burada, süzgeçler arasına boru (|) karakteri konarak bir veya daha fazla süzgeç belirtilebilir.
write=<yazma zincirine uygulanacak süzgeç listesi> Bu seçenek isteğe bağlıdır. Burada, süzgeçler arasına boru (|) karakteri konarak bir veya daha fazla süzgeç belirtilebilir.
<her iki zincire uygulanacak süzgeç listesi>read= veya write= ile öncelenmemiş süzgeç listeleri uygun olduğu takdirde okuma ve yazma zincirlerinin ikisine de uygulanır.

Seçenekler

Sarmalayıcı Özeti (php://filter için, süzülen sarmalayıcı özetine bakın)
ÖzellikDestek
allow_url_fopen ile sınırlıHayır
allow_url_include ile sınırlıSadece php://input, php://stdin, php://memory ve php://temp için.
Okuma izniSadece php://stdin, php://input, php://fd, php://memory ve php://temp için.
Yazma izniSadece php://stdout, php://stderr, php://output, php://fd, php://memory ve php://temp için.
Ekleme izniSadece php://stdout, php://stderr, php://output, php://fd, php://memory ve php://temp için. (Yazmaya eşdeğer)
Aynı anda okuma ve yazma izniSadece php://fd, php://memory ve php://temp için.
stat() desteği Hayır. Ancak, php://memory ve php://temp akımları fstat() işlevini destekler.
unlink() desteğiHayır
rename() desteğiHayır
mkdir() desteğiHayır
rmdir() desteğiHayır
stream_select() desteğiSadece php://stdin, php://stdout, php://stderr, php://fd ve php://temp için.

Örnekler

Örnek 1 - php://temp/maxmemory

Bu isteğe bağlı seçenek, php://temp geçici bir dosya kullanmaya başlamadan önce bellek sınırının ayarlanmasına izin verir.

<?php
// Sınırı 5 MB yapalım.
$fiveMBs = 5 * 1024 * 1024;
$fp = fopen("php://temp/maxmemory:$fiveMBs", 'r+');

fputs($fp, "hello\n");

// Yazdığımızı oku.
rewind($fp);
echo
stream_get_contents($fp);
?>

Örnek 2 - php://filter/resource=<süzülecek akım>

Bu seçenek php://filter belirtiminizin sonunda bulunmalı ve süzülmesini istediğiniz akımı göstermelidir.T

<?php


readfile("php://filter/resource=http://www.example.com");
?>

Örnek 3 - php://filter/read=<okuma zincirine uygulanacak süzgeç listesi>

Bu seçenek, boru karakteri | ile ayrılmış bir veya daha fazla dosya adı alır.

<?php

readfile("php://filter/read=string.toupper/resource=http://www.example.com");


readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com");
?>

Örnek 4 - php://filter/write=<yazma zincirine uygulanacak süzgeç listesi>

Bu seçenek, boru karakteri | ile ayrılmış bir veya daha fazla dosya adı alır.

<?php

file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World");
?>

Örnek 5 - php://memory ve php://temp yeniden kullanılamaz

php://memory ve php://temp yeniden kullanılamaz, yani akımlar kapatıldıktan sonra bunlara tekrar başvurmanın bir yolu yoktur.

file_put_contents('php://memory', 'PHP');
echo file_get_contents('php://memory');
To Top