• 締切済み

Perl内でPHPの出力結果を表示したい

Perl製のCGI内で、PHP製のランダムバナー表示CGIを呼ぼうとしたのですが、下記のようなエラーが出てしまいました。 いろいろ試行錯誤したのですが、お手上げです。 どのように修正したらよいでしょうか? なお、ランダムバナー表示CGI 単体だけを実行したときは、正常に表示されています。 [index.cgi]  #!/usr/local/bin/perl  print "Content-type: text/html\n\n";  print "<HTML>\n<BODY>\n\n";  $ImgFileName="./ad.php";  open(IN, "$ImgFileName |");  while (<IN>) {    $str=$str.$_;  }  close(IN);  print $str; [ad.php]  <?php  $_1 = ('<img src="http://example.jp/a.gif">');  $_2 = ('<img src="http://example.jp/b.gif">');  $img_arry = array("$_1","$_2");  srand((double)microtime()*1000000);  $num =array_rand($img_arry);  $image = $img_arry[$num];  echo "$image";  ?> [表示された内容] ./ad.php: ?php: No such file or directory ./ad.php: line 2: syntax error near unexpected token `('' ./ad.php: line 2: `$_1 = ('【a.gifの画像】);'

みんなの回答

回答No.2

$ImgFileName="./ad.php"; でなく $ImgFileName="php ./ad,php"; のように、ad.phpを処理するプログラムを明示すればOKでしょう。

noname#14848
質問者

補足

明示というのは、$ImgFileName="/usr/local/bin/php ./ad,php"; でいいんでしょうか? そうすると下記のように、コンテントタイプとソースが表示されてします。 Content-type: text/html print "Content-type: text/html\n\n"; print "\n\n\n"; $ImgFileName="/ad.php"; open(IN, "/usr/local/bin/php /ad.php |"); while () { $str=$str.$_; } close(IN); print $str; なお2日待ちますが、どなたからも回答がないようでしたら、私の手には負えない問題だと判断して、質問を終了させていただきます。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

open()内でa.phpをパイプライン実行しようとしてますが、それがphpでなく、shによって実行されたためでないかと。 起動プログラムとして明示的にphpを記述するか、これくらいの規模なら素直にperlだけで記述する方が手っ取り早いと思われます。

noname#14848
質問者

補足

実際はPerl製の日記CGIの中に組み込んで使うことを考えています。 またad.phpは、SSIでも使用しているので、膨大な数のHTMLドキュメントを書き換えなければならず、またメンテナンスを考えると変更したくないです。 ワガママだとは思いますが、どうにかならないでしょうか?