(PHP 4, PHP 5, PHP 7, PHP 8)
popen — Bir süreç tanıtıcısı açar
Belirtilen komut
tarafından çatallanarak çalıştırılan bir sürece bir boruhattı açar.
komut
Komut.
kip
Kip. Okumak için 'r'
veya yazmak için 'w'
aktarılır.
Windows üzerinde, popen() öntanımlı olarak metin kipindedir, örneğin, borudan okunan veya boruya yazılan her \n
karakteri \r\n
haline getirilir. Bu istenmiyorsa, kip
bağımsız değişkenine okuma için 'rb'
veya yazma için 'wb'
atanarak ikil kip zorlanabilir.
fopen() işlevi tarafından döndürülenden farklı olarak hem okuma hem de yazma için kullanılabilen ve pclose() ile kapatılması gereken bir dosya tanıtıcısı ile döner. Bu tanıtıcı, fgets(), fgetss() ve fwrite() işlevleri tarafından kullanılabilir. Kip 'r' ise dönen dosya konumlayıcı komutun standart çıktısına eşitlenir. Kip 'w' ise dönen dosya konumlayıcı komutun standart girdisine eşitlenir.
Bir hata oluşursa false
döner.
Örnek 1 - popen() örneği
<?php
$handle = popen("/bin/ls", "r");
?>
Belirtilen komut dosyası bulunamazsa da geçerli bir tanıtıcı döner. Bu tuhaf görünebilir fakat böyle olması gerekir; böylece kabuk tarafından döndürülen hata iletisine erişmeniz sağlanır:
Örnek 2 - Hata döndüren popen() örneği
<?php
error_reporting(E_ALL);
$bt = popen('/bir/yol/calistirilabilirdosya 2>&1', 'r');
echo "'$tanıtıcı'; " . gettype($bt) . "\n";
$okunan = fread($bt, 2096);
echo $okunan;
pclose($bt);
?>
Bilginize:
İki yönlü destek arıyorsanız proc_open() kullanın.