Ubuntu 12.04 で php スクリプトを使用して c++ プログラムをコンパイルおよび実行しようとしています。c++ プログラムはコンパイルされ、a.out も作成されますが、唯一の問題は ./a.out が機能しないことです。system()、exec()、shell_exec()、backtick、passthru などのように ./a.out を実行するほとんどのコマンドを試しました。簡単にするために、a.out は php と同じディレクトリに作成されます。ファイルが存在します。ここにコードを投稿しています
$target = $_GET['name'];
chmod($target,0777);
$handle = fopen("compile.sh", "x+");
chmod("compile.sh",0777);
$data = "g++ ".$target;
fwrite($handle, $data);
fclose($handle);
system("sh compile.sh");
chmod("a.out", 0777);
system("./a.out");
URL などからコンパイルするファイルの名前を取得しています。上記のコードは、最後から 2 番目の行、つまり chmod("a.out",0777) まで正常に動作しますが、cpp プログラムの出力は表示されません。*そして最も面白い部分は、 g++ を gcc に変更した後、同じコードが C プログラムに対して完全に正常に動作することです。