php://stdin, php://stdout ve php://stderr sarmalayıcıları, PHP sürecinin ilgili girdi/çıktı akımlarına doğrudan erişime izin verir. Akım bir dosya tanıtıcısının çoğullanmış bir gönderimini kullanır, dolayısıyla php://stdin'i açıp sonra da kapatırsanız sadece kendi dosya tanıtıcınızı kapatmış olursunuz; STDIN'e gönderimli asıl akım bundan etkilenmez. PHP 5.2.1'e kadar PHP bu konuda hatalı bir davranış sergilemekteydi. Böyle eski sürümlerden birini kullanıyorsanız, bu sarmalayıcıları kullanmak yerine STDIN, STDOUT ve STDERR sabitlerini kullanarak akımları kendiniz açın.
php://output sarmalayıcısı print() ve echo() işlevlerini kullanıyormuşçasına çıktı tamponuna yazmayı mümkün kılar.
php://input sarmalayıcısı ham POST verisini okumaya imkan verir. Aynı işi yapan $HTTP_RAW_POST_DATA'ya göre belleğe daha az bağımlıdır ve herhangi bir özel php.ini yönergesine ihtiyaç duymaz. php://input sarmalayıcısı enctype="multipart/form-data" ile kullanılamaz.
Bilginize: php://input sadece bir kere okunabilir.
php://stdin ve php://input salt okunur iken, php://stdout, php://stderr ve php://output salt yazılırdır.
php://filter sarmalayıcısı, akımın açılışı sırasında süzme uygulamalarına olanak vermek üzere tasarlanmış bir temel sarmalayıcı çeşididir. İçeriği okunmadan önce akıma bir süzgeç uygulama fırsatı bulunmayan yerlerde readfile(), file() ve file_get_contents() gibi hepsi bir arada dosya işlevleri ile kullanışlıdır.
php://filter sarmalayıcısı aşağıdaki değiştirgeleri kendi yolunun parçaları olarak ele alır:
/resource=<süzülecek akım> (zorunlu) Bu değiştirge, php://filter belirtiminizin sonuna eklemlenmeli ve süzmek istediğiniz akımı hedeflemelidir.
<?php
/* Hiçbir süzgeç belirtilmediğinden buna eşdeğerdir:
* readfile("http://mesela.dom");
*/
readfile("php://filter/resource=http://mesela.dom");
?>
/read=<okuma zincirine uygulanacak süzgeç listesi> (seçimlik). Bu değiştirge boru (|) karakterinin ayraç olarak kullanıldığı bir süzgeç isimleri listesi alır.
<?php
/* mesela.dom içeriğinin tamamını büyük harflerle çıktılayacaktır */
readfile("php://filter/read=string.toupper/resource=http://mesela.dom");
/* Bu da aynı işi yapar fakat ayrıca ROT13 kodlar */
readfile("php://filter/read=string.toupper|string.rot13/resource=http://mesela.dom");
?>
/write=<yazma zincirine uygulanacak süzgeç listesi> (seçimlik).Bu değiştirge boru (|) karakterinin ayraç olarak kullanıldığı bir süzgeç isimleri listesi alır.
<?php
/* "Merhaba Dünya" dizgesini rot13 süzgecinden geçirip
sonucu çalışma dizininde misal.txt dosyasına yazar. */
file_put_contents("php://filter/write=string.rot13/resource=misal.txt","Merhaba Dünya");
?>
php://memory sarmalayıcısı veriyi bellekte saklar. php://temp sarmalayıcısı da benzerini yapar ama belli bir bellek miktarı aşıldığında (öntanımlı 2MB'tır) veriyi saklamak için geçici bir dosya kullanır.
php://temp sarmalayıcısı aşağıdaki değiştirgeleri kendi yolunun parçaları olarak ele alır:
/maxmemory:<bayt sayısı> (seçimlik). Bu değiştirge (verinin geçici bir dosyaya taşınmaması için) öntanımlı bellek sınırını değiştirmeye yarar.
<?php
$beşMB = 5 * 1024 * 1024;
$fp = fopen("php://temp/maxmemory:$beşMB", 'r+');
fputs($fp, "Merhaba\n");
// ne yazılmış bakalım
rewind($fp);
echo stream_get_contents($fp);
?>
Özellik | Destek |
---|---|
allow_url_fopen tarafından sınırlanma | Yok |
allow_url_include tarafından sınırlanma | Sadece php://input, php://stdin, php://memory ve php://temp. |
Okumaya izin | Sadece php://stdin, php://input, php://memory ve php://temp. |
Yazmaya izin | Sadece php://stdout, php://stderr, php://output, php://memory ve php://temp. |
Eklemeye izin | Sadece php://stdout, php://stderr, php://output, php://memory ve php://temp. (Yazmaya eşdeğer) |
Aynı anda okuyup yazmaya izin | Sadece php://memory ve php://temp. |
stat() desteği | Sadece php://memory ve php://temp. |
unlink() desteği | Yok |
rename() desteği | Yok |
mkdir() desteği | Yok |
rmdir() desteği | Yok |
stream_select() desteği | php://stdin, php://stdout, php://stderr ve php://temp. |