exec

(PHP 4, PHP 5, PHP 7, PHP 8)

execBir komut çalıştırır

Açıklama

exec(string$komut, array&$çıktı = null, int&$sonuç = null): string|false

exec() işlevi belirtilen komut'u çalıştırır.

Bağımsız Değişkenler

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.

Dönen Değerler

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.

Hatalar/İstisnalar

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 Bilgisi

Sürüm: Açıklama
8.0.0komut 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.

Örnekler

Ö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 )

Notlar

Uyarı

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.

Ayrıca Bakınız

To Top