• ベストアンサー
  • すぐに回答を!

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 です。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数169
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • entree
  • ベストアンサー率55% (405/735)

PHP はモジュールを組み込まなくても起動できるので、CGI 側から、php をコールするようにすればよいのではないでしょうか。Perl の場合、system 関数がありますが、Windows でもうまく行くのかどうかはよく分かりません。 ちなみに、AddHander の記述順序を変えても優先されるモジュールが変わらないのは、モジュールの組み込み順序を Apache が決めていて、それに依存しているからであり、Apache の仕様です。

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答ありがとうございます。当方知識が無くて申し訳ございませんが、コールする方法をもう少し具体的に教えていただけませんでしょうか。よろしくお願いします。

関連するQ&A

  • .htaccessの中身が php5 CGI版で動かない

    拡張子htmlファイルをphpファイルと認識させる為に、 .htaccessで AddType application/x-httpd-php .html AddHandler x-httpd-php .html と書いて対応していました。 今まではサーバーのphpのバージョンがPHP4(DSO版)だったのですが、昨日サーバーのバージョンがPHP5(CGI版)になってから、上記のような.htaccessが機能しなくなってしまいました。 order deny,allow deny from all ↑ これはちゃんと動くので、.htaccess自体が拒否されてるみたいなことはないと思います。 AddType application/x-httpd-php .html AddHandler x-httpd-php .html ↑ このプログラムがPHP5 CGI版にて意図した動作とならないのです。 何か分かる方いらっしゃいましたら、宜しくお願い致します。

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

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

    • ベストアンサー
    • PHP
  • Perl5とActivePerl

    いつもお世話になっています。 HP制作をしており、やむを得ずPerl・CGIを勉強しています。 初めて3日目くらいの超初心者です。 大変基本的な質問で申し訳ないのですが、 PerlとActive Perlの違いが知りたいのです。 CGI自体はプログラミングされているものを購入して使うつもりで、今設置作業をしているのですが、Perlのことがあまりにも分からないので、「はじめてのPerl/CGIプログラミング」という本も読みながら進めています。 そのCGI開発元では環境条件として「Perl 5.00503以上がインストールされていること」とあるのですが、これはActivePerlとは別ですか? 本「はじめてのPerl/CGIプログラミング」にはActivePerl-5.8.7.813をインストールできるCDが付属しているので、可能ならこのActive Perlを使いたいのですが、無理なのでしょうか? 基本的な質問で申し訳ありませんが、どうぞよろしくお願いいたします。

    • ベストアンサー
    • CGI

その他の回答 (1)

  • 回答No.1
  • yambejp
  • ベストアンサー率51% (3827/7415)

cgiの中でphpをコマンドラインで実行するか、 phpで起動してcgi部分をsystem系の関数から呼び出すか のいずれかでいかがでしょう?

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • ローカルパソコンで、CGI(SSI)及びカウンタの動きを確認したいのですが…。

    翔泳社のPerl/CGI辞典を購入し、それを参考にPerlとApacheをインストールし直してみました。 以前から、少しCGIは使っていたため、Perl『ActivePerl-5.6.1.635-MSWin32-x86』とApache『apache_1.3.28-win32-x86-no_src』それにhttp://www.st.rim.or.jp/~nakata/の『AN HTTP Server』バージョン1.42kを入れていました。 それをPerl『ActivePerl-5.8.3.809-MSWin32-x86』にし、Apacheはそのままのバージョンで、『httpd.conf』の設定を行ないました。 Options Indexes FollowSymLinks MultiViews ExecCGI Includes とし、 AddHandler cgi-script .cgi AddType text/html .shtml AddHandler server-parsed .shtml の#もはずしました。 しかし、SSIが動きません。CGIは動くのですが、これは何故なのでしょうか? 画面上にHello!と表示させる簡単なプログラムです。 Apacheを起動させ、実行するのですが、画面上に何も表示されません。 Apacheを終了させ、『AN HTTP Server』で、同じ物を動かせば、ちゃんと動きます。 これらについて詳しい方、ぜひアドバイスをお願い致します。 そして、もう一つ疑問があるのですが、『AN HTTP Server』のほうで、カウンタの動作を確認してみました。 スクリプトは、『http://www2j.biglobe.ne.jp/~apollo/』さんの『お好みカウンタ』を借りて、試してみたのですか、カウンタの数字が『error』表示になったり、00000のまま動かないのです。 また、Apacheのほうでも試してみたところこちらでは、画像(数字)が『×』となってしまいます。 『AN HTTP Server』では動いているようですが、ちゃんとした動作にはなりません。 ローカルパソコンでは、限界があるということなのでしょうか? 長くなってしまい、かつわかりにくい文章だと思いますが、随時補足しますので、上記の2点についてアドバイスをよろしくお願い致します。

  • CGI版PHPについて

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

    • ベストアンサー
    • PHP
  • PHPをCGIとして実行する方法

    PHPをCGIとして実行する方法 現在PHP(モジュール版)にて開発を行っているのですが、 仕様上.htaccessを使用してcgi-binディレクトリ内にあるphpファイルをCGIとして 実行しなければならなくなりました。 下記の記述方法だと500エラーが発生してしまい、大変困っています。 <Directory "/usr/~(任意のcgi-binディレクトリのフルパス)~/cgi-bin"> AddType application/x-httpd-cgi .php </Directory> 因みに.htaccessはcgi-binディレクトリの1階層上に設置しています。 単に「AddType application/x-httpd-cgi .php」を記述する分には誤作動は起さないのですが、出来れば指定のディレクトリ内だけで指定したいと考えています。 もし思い当たる点がありましたら、ご教授お願い致します。 下記に環境を記しておきます。 【環境情報】 OS:FreeBSD 6.2(レンタルサーバ) PHP:5.2.4

    • ベストアンサー
    • PHP
  • Perlを勉強したかったのですが・・・。

    この間、Perl/CGIを勉強しようと某書籍を買い、付属のCD-ROMでApache Web Serverと、AvtivePerlをインストールしました。 この本のマニュアルによれば、ieを開いて「http://127.0.0.1/」と指定すると、Apacheを指定画面が出ると書かれていたのですが、このマニュアルどおりにならず、私がFrontPageで作成したホームページの試作品がでてきてしまいます。 どうやらhttp://127.0.0.1/の示す先がFrontPageでつくったホームページの試作品に対応しているためにこのようなことになってしまうようなのですが、どうしたらC\Apacheディレクトリに対応するように設定を変えることができるのでしょうか? CGIの勉強ができずに大変困っています。

  • Windows版ApacheでCGIやSSI

    初めまして、 Windows版Apache HTTP Server2.0を使用しています。 SSIやCGIを使用したいのです。 ActivePerlをC:/usr/localに導入しましたが、 httpd.confをどの様に修正すれば良いでしょうか? ご指導、お願い致しますm(_ _)m

  • Perlが動作しない?

    色んな所でお世話になってます。 皆様にはいつも親切にお答え下さって、本当に感謝しています。 今回、CGIを使ってやりたいことがあり、翔泳社から出版されている 『10日でおぼえるPERL/CGI 第2版』 という本を買ってきました。 が、インストール場所、apacheの設定、入力など、何も間違っていないのに、動作してくれません。 状況として、WEBページで開くと、txt(もちろん拡張子はcgiに変更してあります)の内容がそのまま出力されます。 本来ならばprintのダブルコーテーション内だけが出力されなければいけない筈(本の写真にはそう写ってる)なんですが、WEBページ(127.0.0.1)を開いても #! c:/perl/bin/perl print "Content-type: text/plain\n\n"; print "Hello Perl !"; と表示されるだけなんです。 apacheにはうまく接続できているので、問題はPERL.EXEの方だと思うのですが… 再インストールしてもムダな努力でした。 本の支持通りやってるつもりなので原因が思いつきません。 どこに原因があるのでしょうか? 可能性はたくさんあるんだと思いますが、可能な限り全て試してみますので、よろしくお願いします。

    • 締切済み
    • CGI
  • OSXでcgi

    OSXでperlで作ったcgiを動かしたいと思い色々といじってるのですが全く動きません。 apacheのhttpd.confの設定で AccessFileName .htaccess AddHandler cgi-script .cgi AddHandler cgi-script .pl についてはコメントをはずして使えるようにして Perlのパスも#!/usr/bin/perlとしてsiteフォルダとcgiを置いてるディレクトリに.htaccessを下のように記述して作り AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .cgi/ パーミッション設定をちゃんとしてあげてるのですがブラウザからアクセスするとForBiddenとでてしっかりと設定してるはずのパーミッション設定が間違ってますと言われてしまいます。 OSXでcgiを動かすには他にももっと色々と設定しなければダメなんでしょうか?

    • ベストアンサー
    • Mac
  • CGI版PHP?

    よろしくお願いします 現在ローカルで Windows2000+Apache2+php4のPHPの実行可能環境を構築しています ところが、現在使用しているサーバーの1つが CGI版PHPというのかどうかわかりませんが 拡張子を.cgiにして1行目に #!/usr/local/bin/php-cgi-4.3.11 などを書いてPHPを実行する方法をとっています これだと、ローカルで構築したあとに拡張子を変えて リンクを変えて・・・と面倒なので 拡張子がphpでもcgiでも実行できる環境を構築できないかと思い 質問させていただきました 参考になるホームページなどがありましたら教えていただけないでしょうか?

  • Perlを学ぶ理由付けはあるでしょうか?

    Perlを学ぶ理由付けはあるでしょうか? HTML、PHP、JavaScriptなどを少し勉強して来ましたが、 その上、Perl/CGIを学ぶ必要があるでしょうか。 Perlを学ぶ利点を教えて下さい。

    • ベストアンサー
    • Perl
  • apacheでCGIを動かす

    apacheでCGIを動かそうと思っていますが、どうしても出来ません。 環境は以下の通りです。 apache:1.3.35 OS:Windows2000 httpd.confの設定は 1.ScriptAlias /cgi-bin/ の行をコメントアウト 2.Alias /cgi-bin/ "E:/hoge/cgi-bin/"に変更してDirectoryタグを追加 3.AddHandler cgi-script .exeを追加 以上の3点をしましたが、新しく設定したディレクトリのcgiは動作しませんでした。 apacheのmodulesディレクトリの中にmod_alias.soというファイルが有りませんがそれは関係有るのでしょうか? また、apacheとtomcatの連携ということを以前行ったのですが、動かない事と関係あるのでしょうか? 文字数の関係で見づらい説明になっているかと思いますがよろしくお願い致します。