PHPを使用してプログラムを実行する必要がありますが、問題のファイルはClustalW(clustalw2)です。私のApacheユーザーはフィッシュシェルを使用するhttpなので、clustalw2を/srv/http/Clustal
フィッシュパスに移動してディレクトリを追加しました。
端末を使用してhttpにログインして実行すると、clustalw2 -INFILE=input_file -OUTFILE=output_file
すべてが期待どおりに機能します。
ただし、実行するたびにshell_exec('clustalw2 -INFILE=input_file -OUTFILE=output_file');
何も起こらず、次のエラーログが表示されます。sh: line 1: clustalw2: command not found
私が実行した場合:
<?php
echo "USER: ".shell_exec('whoami')."<br>";
echo "SHELL: ".shell_exec('echo "$SHELL"')."<br>";
echo "WHICH clustalw2: ".shell_exec('which clustalw2');
出力:
ユーザー: http
shell:/usr/bin/fish
ここで clustalw2:
which clustalw2
http ユーザーを使用して端末で実行する場合:
/srv/http/Clustalw/clustalw2
答え1
プログラムが存在しないclustalw2
ため、プログラムが見つかりません。clustalw2
$PATH
あなたの場合、最も簡単な解決策は次のようにフルパスclustalw2
に置き換えることです。/srv/http/Clustalw/clustalw2
shell_exec