• 締切済み

cgi(perl)からphp呼出

どなたかご教授ください。 perlのcgiからsystem関数でphp(コマンドで実行可能なコード)を実行して返値を得たいのですが perlのcgiの実行結果では画面に文字化けを起こしたような結果が帰ってきます。 cgi(perl)からphpを実行するにはどのように すればいいのでしょうか? ご教授ください。

  • PHP
  • 回答数3
  • ありがとう数0

みんなの回答

回答No.3

>コマンドラインでの実行結果は「1」ないし「0」を出力するといったもので、実行結果は正常でした。 ん?たったそれだけですか?だとしたら文字コードは関係ないですねぇ。半角数字だけでしたらどの文字コードでも同じですもの。 もしかしたら文字化けに見えるものは「エラーメッセージ」じゃないですか?コマンドラインから実行してOKで、cgiからだとダメだとしたらパス、パーミッション、カレントディレクトリあたりの問題があるかも知れません。ちょっと確認してみて下さい。

回答No.2

「mailmail」です。(パスワード情報紛失のためこのユーザを使用いたします) ご回答ありがとうございました。 「phpの出力の文字コードは何を使ってますか?そしてcgiの出力の文字コードは?もし違うとしたらコード変換は行ってますか?」のご質問に関してですが phpからの出力はEUC-JPですので cgiの出力にあわせて変換を行いましたが だめでした。 「あとphpをコマンドラインから実行させた時の出力は期待通りのものであるか確認して下さい。」 に関してですが、 コマンドラインでの実行結果は「1」ないし「0」を出力するといったもので、実行結果は正常でした。 もう一度文字コードまわりで試行錯誤してみます。 ありがとうございました。 その他ご意見ございましたら ご返答いただきたく存じます。 以上よろしくお願いいたします。

回答No.1

これだけの情報では何とも言いようが無いのですが、cgiの内部処理とphpの出力の文字コードが合ってないのでは、と思います。 phpの出力の文字コードは何を使ってますか?そしてcgiの出力の文字コードは?もし違うとしたらコード変換は行ってますか? あとphpをコマンドラインから実行させた時の出力は期待通りのものであるか確認して下さい。

関連するQ&A

  • PerlのCGIとPHPを

     特定のディレクトリのCGIの中にPHP(Apacheのモジュール版)を書き、(CGIで<?php~?>とHTMLを出力させる)Perl/CGIを実行したときにその出力の中に含まれるPHPを実行させたくて、.htaccessに AddHandler application/x-httpd-php cgi AddHandler cgi-script .cgi を書いたのですが、どうやらPHPのAddHandlerの後に書かれているCGIの方が優先され、PHPが実行されず、CGIのみが実行されます。  順序を逆に書いても、今度はPHPが優先されてしまい、どちらか片方しか実行されません。  どうすれば、両方同時に実行させられるでしょうか、教えてください。  それが不可能ならば、とりあえずPerl/CGIからPHPを呼び出して先に実行させるようなことができるのならば教えてください。  ちなみに、httpd.confには拡張子cgiをすべてのディレクトリでCGIとして実行、拡張子phpもすべてのディレクトリでPHPとして実行させるようにAddHandlerされています。 Apache/2.0.58(Windows版) PHP/5.1.6 CGI: ActivePerl 5.88 です。

    • ベストアンサー
    • PHP
  • Perl内でPHPをコールしたい・・・

    Perlで書いたCGI内で、PHPをコールして実行させたいのですが、どうすればよろしいでしょうか? もしくは、逆のパターン(PHP内でPerlをコールして実行させる)でもかまいません。 どなたか、ご教授下さいませ。

    • ベストアンサー
    • Perl
  • IISでCGIとしてのPerlが動かない

    Win2K ProにてIISでローカルサーバーでサーバーサイドスクリプトの勉強中です。 ASPは標準でついているので、PerlとPHPを組み込みました。 PHPは内部プロセス型ではなく、CGIバージョンですが、正常動作しました。 もちろんASPも。 それで問題なのですが、Perlがどうしても動きません。 PHPと同じように実行ファイルのパスや拡張子の設定はできているはずです。 しかし、いつまでたっても出力が出ず、2分くらいたってCGIタイムアウトとなってしまいます。 PerlにはActive PerlとCygwin付属のPerl両方試しましたが、タイムアウトです。 ファイルをコンソール上で実行してみましたが、Active PerlもCygwinのPerlも、期待通りの出力がなされています。 ちなみに、shファイルをCygwinのbashに関連付けて、実行させましたが、コンソール上での出力とはうらはらに、ブラウザ上ではやはりタイムアウトとなりました。 PerlのソースはいずれもほかのところのApacheでは動いているものです。 httpヘッダも正常です。 ソースの文字コードは英語のみ、EUC、改行コードcr+lf、lfのみなど、いろいろ試しましたがダメでした。 なにが原因なのでしょう。 IISを使っている方、アドバイスお願いします。

  • PHPかCGIか迷っています

    ホームページ制作はほぼできるのですが、次に勉強しようと思いましてcgiの勉強を始めたのですが、PHPの方が良いという人がいまして、迷っています。CGIからPHPの方が楽に進めるのでは無いかと思うのですが、ご教授願えないでしょうか??PHPの関数とCGIの関数は違うのでしょうね。

  • perlでCGIを試みたのですが・・・

    Mac OSXでperl、cgiを作りたいと思ったのですが、どうも動きません。サンプルと全く同じ文字コード、改行コードのしています・・・エディタはmiを使っているのですが、それがいけないのでしょうか?もしmiでperlやcgiを作っている方、どのような設定をすれば良いか教えていただけないでしょうか? また、miで作成したデータをテキストエディタで開こうとすると、このテキストエンコーディングは開けませんというエラーがでます。 わかる方お願いします。

    • ベストアンサー
    • Perl
  • PerlでCGIの書き方

    今、HTML:Templateを用いてCGIのプログラムを書いています。 基本的にCGI上のボタンをおすとPOSTで情報をわたして、次のCGIにいき、そこからTMPLを読み出して、画面を表示してるのですが、画面場のボタンをおしてもCGIを更新せずに、Perlの実行だけすることは可能ですか?あるいは、POSTでCGIに届いた情報をIF文で中身を確認して、表示するTMPLをかえて、Perlの実行も行うのが普通のやりかたなのでしょうか? あまりよくわからずにネットだけの情報をたよりにプログラミングをしているので設計の仕方など分からないことが多々あります。 どなたかCGIに詳しい方ご返答おねがいします。

    • ベストアンサー
    • CGI
  • CGI版PHPについて

    一般的なPerlのCGIが実行可能な状態のApache(Linux上)にCGI版のPHPを追加インストールした場合、ApacheはスクリプトがPerlであるかPHPであるかの違いをどう認識するのでしょうか? 方法1 スクリプトはどちらも*.cgiとして作成し、スクリプト内先頭行のperlやphpへのパスの記述で認識する 方法2 perl→*.cgi php→*.php のようにhttpd.confや.htaccessで設定する 初心者のためこの二つくらいしか思い浮かばないのですが、どちらかが正解だったりしますか??

    • ベストアンサー
    • PHP
  • PERLのかわりにPHP

    WEBクリエーター業で、システム開発に必要なPerl/CGIを、PHP、またはJSPで代理することは可能でしょうか?自分はシステムに詳しくはないのですが、そのようなことがあるサイトに書かれていたので気になりました。よろしくお願いいたします。また、可能であれば詳しい理由と、その場合、PERL/CGIを体系的に覚えるだけでかまわないでしょうか?

    • ベストアンサー
    • PHP
  • PerlでInternal CGI Error Malformed Error

    こんばんわ。 皆様お忙しいところかと思いますが、 なにとぞお助けいただけますようお願いいたします。 環境 Perl5.0.8.2 VineLinux3.2 Apache1.3.33 皆様方から見るとなんでそんなことしてるの!? と思われると思いますが、現在、perlにて、 メールフォームを作ろうと考えています。 ただperlからのメールフォームは、sendmailを 利用したものが多いのですが、sendmailが インストールできない環境な為、 Javaにてメール送信用のコマンドを作成しまして、 ファイルパスをパラメータとして渡すことで、 メールが送信出来るにはなりました。 (文字化けなどが発生していますが(汗)) 一々forkするのはお勧めできないと言うのは 置いておいて、Internal CGIErrorが発生してしまい、 よく解決方法がわかりません。(perl初心者です) Apacheのerror.logには以下のメッセージが出ています。 mailformed header from script. Bad header=0: 切り分けのために以下のコードだけにして実行してみたのですが、動作は正しいのですが、internal CGI error が発生してしまいます。 $status = system($COMMAND); print "Content-Type:text/html\n\n"; print "success"; hello perlではこんな感じで表示できているので、 system関数自体がそもそも駄目なのでしょうか・・・。 申し訳ございませんがご教示ください。 以上

    • ベストアンサー
    • Perl
  • perl内でPHPを動かす?

    perlでhtmlを書き出しています。 そのhtmlにPHPを埋め込みたく思い、書き出されたhtmlにPHPを記述して phpとして保存。動作を確認しました。 perlで書き出している全てのページにこのPHPを埋め込みたく思い、perlの print <<EOF; ~ EOF の間に <?php ~ ?> を埋め込みましたが動きません。 当然の結果なのでしょうか… 何か方法があればご教示願います。  下記のようなページも見つけましたが、コードをperlに貼り付けても 動作しません。直接貼り付けるのではないのでしょうか? http://phpspot.org/blog/archives/2006/03/perlphp_2.html どうぞ宜しくお願いします。

    • ベストアンサー
    • Perl