PHP sistemi () fonksiyonu değişken 2 kez yazdırır

5 Cevap php

Aptalca bir soru, bu kodu:

<?php
$variable = system("cat /home/maxor/test.txt");
echo $variable;
?>

dosya test.txt ile:

blah

yazdırır:

blah
blah

Ben bu yüzden 1 "blah" olsun hiçbir baskı değil sistemi () fonksiyonu ile ne yapabilirim??

5 Cevap

system çıktının son satırı döndürür ne olursa olsun program çıkışları ve görüntüler.

exec hiçbir şey görüntüler ve çıkış son satırı döndürür.

passthru görüntüler ne olursa olsun program çıkışları ve döner bir şey.

Kılavuzuna göre - bkz system() :

system() is just like the C version of the function in that it executes the given command and outputs the result.

Ilk blah açıklıyor


And :

Returns the last line of the command output on success

İkinci blah açıklıyor - Ve sen döndürülen değeri yankılanıyor.


If you want to execute a command, and get the full output to a variable, you should take a look at exec, or shell_exec.

İlki size bir dizi (see the second paramater) için tüm çıktı satırları alacak; ve ikinci bir bir dize olarak size tam çıkış alırsınız.

exec yerine kullanın. Tüm çıktı, yerine sadece son satırı daha bunu yapmak almak için:

$variable = array();
$lastline = exec("cat /home/maxor/test.txt", $variable);
echo implode("\n", $variable);

system test.txt adlı "blah" çıktısı gerçek cat programı, çağırıyor. Ayrıca geri $variable hangi sonra tekrar dışarı yazdırdığınız için değerini döndürür.

exec or shell_exec sistem yerine kullanın.