プロが教えるわが家の防犯対策術!

PHP初心者です。PHPからCプログラムを実行して実行結果をHTML上に表示する方法が分からなく困っています。
Cプログラムの中身は、
#include <stdio.h>

int main(){
printf("Hello.");
}
です。
phpの中身は、
<HTML>
<HEAD><TITLE>Cプログラム呼び出し</TITLE></HEAD>
<BODY>

<?php
$cmd = "test.exe";
$a = exec($cmd);
echo $a;
?>

</BODY>
</HTML>
としており、調べてみるとexec()関数で外部プログラムを実行すると書いてあったのでこのように作成しました。

A 回答 (3件)

なんか違うtest.exeを実行しているような気がするので、


フルパスで指定してみては?
    • good
    • 0
この回答へのお礼

色々と試したらうまくいきました。回答していただいた方有り難うございました。

お礼日時:2010/01/21 14:12

実行と出力に関するコマンドは色々あります。


exec(),system(),shell_exec(),passthru()、そのた・・・

それぞれ主旨が若干異なりますので、用途に合った利用をしてください。

当座shell_exec()の方が使い勝手がいいとおもいますし、
怪しいデータは未整形に出力するpassthru()でデバッグしたほうが
いいかもしれません

この回答への補足

exec()で実行したときも、「ファイルが開けません」と出ています。
test.exe、test.cファイルは、phpファイルがあるフォルダと同じフォルダに保存しています。

補足日時:2010/01/21 12:57
    • good
    • 0
この回答へのお礼

返事有り難うございます。
passthru()関数も試してみたんですが、「GIFファイルの画像サイズを調べて表示しますファイルが開けません 」と出るだけでした。

お礼日時:2010/01/21 12:37

本当だ、マニュアルには最終行が返る、ってあるのに何でだろうね。


http://php.net/manual/en/function.exec.php
一応第二引数にはちゃんと渡っているから
==========ソース==============
<?php
/*
このファイル名はこっちの都合。質問文のプログラムをVC++ 2008に突っ込んでコンパイルしただけです
*/
$cmd = "Q5610012.exe";
exec($cmd,$output);
echo $output[0];
?>
=====================
とかやって
===========結果=============
Hello.
========================
でとりあえず回避してみてはいかがだろう?

#Windows XP SP3 + PHP 6独自ビルド
    • good
    • 0
この回答へのお礼

返事有り難うございます。
上記でやってみましたが、何も表示されませんでした。

お礼日時:2010/01/21 12:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!