array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'function.exec.php', 1 => 'exec', ), 'up' => array ( 0 => 'ref.exec.php', 1 => 'Program Çalıştırma İşlevleri', ), 'prev' => array ( 0 => 'function.escapeshellcmd.php', 1 => 'escapeshellcmd', ), 'next' => array ( 0 => 'function.passthru.php', 1 => 'passthru', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'tr', 'path' => 'reference/exec/functions/exec.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
exec — Bir komut çalıştırır
exec() işlevi belirtilen komut
'u çalıştırır.
komut
Çalıştırılacak komut.
çıktı
Bu bağımsız değişken belirtilmişse, dizinin her elemanına komut çıktısının bir
satırı yazılır. Satırların sonundaki \n
gibi boşluk
karakterleri dizide bulunmaz. Dizi zaten bazı elemanlar içeriyorsa
exec() çıktısı dizinin sonuna eklenir. Eğer işlevin
çıktısının böyle dizi sonuna eklemesini istemezseniz, diziyi
exec() işlevine aktarmadan önce üzerinde bir
unset() çağrısı yapmalısınız.
sonuç
çıktı
bağımsız değişkeninin yanında bir
dönüş_değeri
bağımsız değişkeni belirtilmişse komutun
çıkış durumu bu bağımsız değişkene yazılır.
Komut çıktısının son satırı. Bir komutu, çıktısı ortamla etkileşime girmeden doğrudan geri aktarılsın isterseniz passthru() işlevini kullanın.
Başarısızlık durumunda false
döner.
Çalıştırılan komutun çıktısını almak istiyorsanız
çıktı
bağımsız değişkenini belirtmeyi unutmayın.
komut
çalıştırılamazsa bir
E_WARNING
çıktılanır.
komut
boşsa veya null
baytlar içeriyorsa bir
ValueError oluşur.
Sürüm: | Açıklama |
---|---|
8.0.0 |
komut boşsa veya null baytlar içeriyorsa
artık bir ValueError oluşmaktadır. Evvelce
bir E_WARNING çıktılanır ve false dönerdi.
|
Örnek 1 - exec() örneği
<?php
// php/httpd süreçlerinin sahibi olan kullanıcının ismini çıktılayalım
// Tabii, whoami komutu olan bir sistemde.
$output=null;
$retval=null;
exec('whoami', $output, $retval);
echo "$retval durum kodu ile döndü, çıktısı:\n";
print_r($output);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
0 durum kodu ile döndü, çıktısı:: Array ( [0] => cmb )
Kullanıcı kaynaklı verilerin bu işlev üzerinden aktarımına izin verilecekse, kullanıcının bazı komutlar çalıştırarak sistemi kandıramaması için escapeshellarg() veya escapeshellcmd() işlevleri kullanılabilir.
Bilginize:
Eğer bir uygulama bu işlevle başlatılmışsa uygulamanın artalanda çalışmasını sürdürebilmesi için uygulama çıktısı ya bir dosyaya ya da başka bir çıktı akımına yönlendirilmelidir. Aksi takdirde, uygulama sonlanana kadar PHP askıda kalacaktır.
Bilginize:
Windows'ta exec() işlevi, komut çalıştırmak için önce cmd.exe çalıştırır. cmd.exe yerine harici bir uygulama çalıştırılmak istenirse proc_open() işlevi
bypass_shell
seçeneğiyle kullanılabilir.