私は、ユーザーがデータベースに対してタンパク質配列を実行できるはずのサーバーで作業しており、それはblastallと呼ばれる実行可能ファイルを使用します。サーバーは実行可能ファイルを生成し、バッチを使用して実行する必要があります。ただし、実行されていないようです。実行可能ファイルの例は、generates(cmd.sh)です。
#!/usr/bin/env sh
cd /var/www/dbCAN
php -q /var/www/dbCAN/tools/blast.php -e -w /var/www/dbCAN/data/blast/20121019135548
その最後のクレイジーな番号は、ジョブが送信された日時に基づいて自動生成されたジョブIDです。2つの問題があり、私は一度に1つずつ解決しようとしています。最初の問題は、手動で実行すると(./cmd.shを実行するだけで)、次のエラーが発生することです。
sh: 1: /var/www/dbCAN/tools/blast/bin/blastall: not found
sh: 1: /var/www/dbCAN/tools/blast/bin/blastall: not found
sh: 1: -t: not found
しかし、指定されたディレクトリには実際にはblastallが含まれているため、これは私にはあまり意味がありません。完全なrwx権限があり、途中のすべてのディレクトリに適切な権限があります。
ツールのblast.phpファイルは次のようになります。
try {
do_blast($opts["w"]);
$info['status'] = 'done';
$fp = fopen("$opts['w']/info.yaml","w")
fwrite($fp, Sypc::YAMLDump($info)); fclose($fp);
}
もちろん、その上に変数宣言があり、do_blast関数は次のようになります(ここでも、その上に変数が宣言されており、ディレクトリが機能するようにcdがあります)。
function do_blast($workdir)
{
system("/var/www/dbCAN/tools/blast/bin/blastall -d data/blast/all.seq.fa -m 9 -p blastp -i $workdir/input.faa -o $workdir/output.txt")
system("/var/www/dbCAN/tools/blast/bin/blastall -d data/blast/all.seq.fa -p blastp -i $workdir/input.faa -o $workdir/output2.txt")
}
この問題の原因は何ですか?私が実行していて、apacheによって作成されたためかもしれないと思いましたが、rwxはすべてのユーザーに許可されています。必要に応じてさらに情報を含めることもできますが、PHPを作成した元の人がすべてを大量の小さなファイルに分割したため、この時点では含めないことにしました。そのため、問題がどこにあるかを正確に特定することは困難です。どんなアイデアでも(完全な解決策ではないにしても)非常に高く評価されています。
編集:解決策が見つかりました。結局のところ、blastall実行可能ファイルは別のLinuxシステムでコンパイルされていました。別の実行可能ファイルに切り替えて、問題なく実行されました。