2012-05-09 11 views
2

実行可能ファイルにコンパイルされたCプログラムがあります。私は自分のコンソールからこのプログラムを実行できます。このプログラムの出力をWebブラウザから取得しようとしているので、PHPでexecコマンドを使用しています。私のPHPスクリプトはコマンドラインから実行するとうまく動作しますが、ブラウザで呼び出すと入力がありません。ここに私のPHPプログラムはありますPHPからCプログラムを実行してWebブラウザに出力しよう

<?php 
    echo exec('/var/www/html/./readcard'); 
    ?> 

readcardプログラムには777の権限があります。私はその問題がパーミッションと関係していると思いますか?

+0

([ブラウザを使用して異なる場合PHPでシステムコマンドを実行し、コマンドラインを使用する場合]の可能な重複http://stackoverflow.com/questions/2980449/executing-system-command-in-php-differs-使用時のブラウザと使用時の表示) – hakre

答えて

1

おそらく、スクリプトのリターンコードをエコーするだけです。出力をファイルにリダイレクトしてからphpから出力したり、出力ストリームをPHPコードに直接パイプしたりすることができます。

は、あなたが出力をキャプチャしていない

<?php 
    $output = array(); 
    exec('/var/www/html/./readcard', &$output); 
?> 
4

を試してみてください。 execの2番目の引数は、出力行が配置される配列で構成されます。

<?php 
$output=array(); 
$rv=0; 
exec('/var/www/html/./readcard',$output,$rv); 

if($rv!=0) 
{ 
    die("readcard failed, got a return value of $rv\n"); 
} 

foreach($output as $line) 
{ 
    echo("<p>$line</p>\n"); 
} 
?> 
+0

こんにちはジャック、ありがとう。まだ同じ。しかし、コマンドラインから実行するとうまく出力されます。 – user813813

+0

ええと、戻り値をチェックしてください(上記のコードを参照)。 –

+1

私は問題を発見したと思う、私のCプログラムはいくつかの共有オブジェクトを呼び出しており、オペレーティングシステムはこれを防止している。これらのオブジェクトに対するアクセス許可を変更しようとしています。 – user813813

関連する問題