web-dev-qa-db-ja.com

PHP return_varコード?

私はphp execコマンドをテストしています:

http://php.net/exec

そして、結果コード127が返されます。

私のphpコードは:

<?

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.";

?>

そして出力は:

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のドキュメント(私が見つけることができる限り)はこれを言っています:

return_var

Return_var引数が出力引数とともに存在する場合、実行されたコマンドの戻りステータスがこの変数に書き込まれます。

...しかし、出力の可能性のリストやそれらを調べる方法はありません。

助言がありますか?

23

戻りコードは少し恣意的です。ただし、基本的に、ゼロ以外の戻り値はエラーです。 これがリストです いくつかの一般的なものですが、通常、特定のプログラムで作業しているのでない限り、数値をマッピングしようとするのではなく、ゼロ以外のエラーが見つかったと仮定する方が簡単です=特定のエラーコードへのさまざまなプログラムの。

23
Owen

戻りコード127はを意味します指定されたプロシージャが見つかりませんでした。

Windowsを使用していると仮定すると、 Windowsシステムエラーコード

10

戻り値は完全に任意です。プログラムを書くとき、あなたはそれがあなたが望むどんな値でも返すようにすることができます。 PHPでは、 exit 言語構成を使用してそれを行うことができます:

<?php
exit(33);

ドキュメントで特定のソフトウェアの正確なステータスコードを確認できます(作成者が実際にドキュメント化した場合)。ただし、0は「OK」を意味し、それ以外は「問題があった」ことを意味するという共通の合意があるため、通常はゼロに対するチェックで十分です。

あなたの場合、存在しないプログラムを実行しようとしているようです。 PHPシステムシェルを介して外部プログラムを実行するため、値はbashまたはデフォルトのシェルから取得される可能性があります。Unixでは、いくつかの 特別な意味を持つ終了コード および127コマンドが見つからないことを意味します

3

exec()は外部ファイルを操作し、そこから、またはオペレーティングシステムから戻りコードを受け取ります。 127がオペレーティングシステムからのものである場合、定義したパスにファイルが見つからなかったことを意味します。

一方、127が実行中のアプリケーションからのものである場合は、そのアプリのドキュメントを確認して、その意味を確認する必要があります。

1
Bruce Alderman