7

私はサーバー アプリケーションを開発していますが、最近、テスト サーバー (Debian Squeeze) でこの奇妙なエラーに遭遇しました。

popenに渡すすべての実行可能ファイルは、次のメッセージで失敗します。

sh: sort: not found // happens to any command

これは、「type」によって返されたフルパスを指すか、それを短くするかに関係なく発生します。前述のように、これは 1 つのテスト環境でのみ発生し、混乱を招きますが、同じ OS を実行しており、まったく問題はありませんでした。

Popen は明らかにshを使用してコマンドを実行していますが、コマンドライン (bash または sh) から同じコマンドを実行すると、すべて問題ありません。

前もって感謝します

(PS:このヘッドスクラッチャーを釘付けにするためだけにPython os.popenを試してみましたが、うまくいきました!)

編集 これは失敗する単純な呼び出しです:

$command="tail -10 myfile";
$handle = popen($command.' 2>&1','r');
if($handle){
  while (!feof($handle)){
  ....//process buffer
  }
}

戻り値:

sh: tail: not found
4

2 に答える 2

1

popen を呼び出すときに、PATH が適切に構成されていない可能性があります。これは PHP の設定の問題だと思いますが、次の方法で回避できます。

  1. を実行which tailして、テール プログラムへのフル パスを特定します。
  2. popen1で見つけたパスで呼び出します。
于 2010-04-27T02:02:55.693 に答える