PHP return_var kodları?

4 Cevap php

Ben php exec komutunu test ediyorum:

http://php.net/exec

ve ben 127 bir sonuç kodu geri alıyorum.

Benim php kodu:

<?

print "<br>executing 'hello':<br><b>";
exec ("hello", $output, $result);
var_dump($output);
print "<br>$result";
print "<br></b>end hello.";


print "<br><hr><br>";


print "<br>executing 'dir':<br><b>";
exec("dir", $output2, $result2);
var_dump($output2);
print "<br>$result2";
print "<br></b>end dir.";

?>

Ve çıktı:

executing 'hello':
array(0) { } 
127
end hello.


executing 'dir':
array(2) { [0]=> string(42) "bs1.jpg hello  index.htm ml1_1.jpg pp1.jpg" } 
0
end dir.

Php belgeleri (bildiğim kadarıyla bulabildiğim gibi) bu diyor ki:

return_var

If the return_var argument is present along with the output argument, then the return status of the executed command will be written to this variable.

... Ama çıkış olasılıklarının listesini ya da onları aramak için bir yol yoktur.

Herhangi bir öneriniz?

4 Cevap

Dönüş kodları biraz keyfi olabilir. Temelde rağmen, sıfır olmayan herhangi bir dönüş değeri bir hatadır. Here's a list bazı ortak olanlar, ancak belirli bir program ile çalışıyoruz sürece genellikle, sadece sıfırdan varsaymak kolay farklı programlar bir dizi harita çalışırken aksine = bazı hata bulundu, Belirli hata kodları.

Dönüş kodu 127 aracı The specified procedure could not be found.

Windows üzerinde varsayarsak, Windows System Error Codes

Dönüş değerleri tamamen keyfi vardır. Bir program yazarken bunu istediğiniz ne olursa olsun değer dönmek yapabilirsiniz. PHP olarak, exit dil yapısı ile bunu yapabilirsiniz:

<?php

exit(33);

?>

Sen (yazar aslında belgelenmiş verilen) belgelerinde yazılım belirli bir parçası için kesin durum kodunu öğrenebilirsiniz. Ancak, ortak anlaşma 0 "Tamam" anlamına gelir ve başka bir şey, bu nedenle normalde yeterli sıfıra karşı olduğunu kontrol etmek, "bir sorun vardı" anlamına gelir var.

Eğer var olmayan bir programı yürütmek için çalıştığınız gibi size durumda görünüyor. PHP bu yüzden değer bash veya ne olursa olsun varsayılan kabuk var gelmesi muhtemeldir sistem kabuğu ile dış programlar yürütür. Unix, bazı exit codes with special meanings ve 127 araçlar oradayız command not found.

exec() harici bir dosya üzerinde çalışır ve oradan ya da işletim sisteminden dönüş kodu alır. 127 işletim sisteminden geliyor ise, o dosya tanımlanmış bir yol bulunamadı demektir.

Öte yandan, 127 çalıştırdığınız uygulamadan geliyor, eğer, ne anlama geldiğini bilmek için bu uygulama için belgeleri kontrol etmek gerekir.