アプリ版:「スタンプのみでお礼する」機能のリリースについて

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の画像】);'

A 回答 (2件)

open()内でa.phpをパイプライン実行しようとしてますが、それがphpでなく、shによって実行されたためでないかと。


起動プログラムとして明示的にphpを記述するか、これくらいの規模なら素直にperlだけで記述する方が手っ取り早いと思われます。

この回答への補足

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

補足日時:2005/02/25 21:47
    • good
    • 0

$ImgFileName="./ad.php";


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

この回答への補足

明示というのは、$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日待ちますが、どなたからも回答がないようでしたら、私の手には負えない問題だと判断して、質問を終了させていただきます。

補足日時:2005/02/28 23:24
    • good
    • 0

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