- 締切済み
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の画像】);'
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
$ImgFileName="./ad.php"; でなく $ImgFileName="php ./ad,php"; のように、ad.phpを処理するプログラムを明示すればOKでしょう。
- osamuy
- ベストアンサー率42% (1231/2878)
open()内でa.phpをパイプライン実行しようとしてますが、それがphpでなく、shによって実行されたためでないかと。 起動プログラムとして明示的にphpを記述するか、これくらいの規模なら素直にperlだけで記述する方が手っ取り早いと思われます。
補足
実際はPerl製の日記CGIの中に組み込んで使うことを考えています。 またad.phpは、SSIでも使用しているので、膨大な数のHTMLドキュメントを書き換えなければならず、またメンテナンスを考えると変更したくないです。 ワガママだとは思いますが、どうにかならないでしょうか?
補足
明示というのは、$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日待ちますが、どなたからも回答がないようでしたら、私の手には負えない問題だと判断して、質問を終了させていただきます。