• ベストアンサー

拡張子をphpではなくcgiで実行する方法

添付つき送信フォームを、test.htmlからsend.phpを <form method="post" action="test/send.php"> で定義して実験成功しました。 このphp拡張子をcgiに変更して <form method="post" action="test/send.cgi"> ファイル名も変更しましたが、エラーになります。 ルートディレクトリ - test.html           - testフォルダ - send.cgi Apacheのhttpd.confの設定は下記サイトの 「Windows XPでPHPを動作させてみよう!」のCGIの設定です。 http://aki.adam.ne.jp/index.php 拡張子cgiで実行する手段を宜しくお願い致します。

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

  • ベストアンサー
  • petit-C
  • ベストアンサー率46% (7/15)
回答No.8

#6です。 すみません 駄目でしたね。 AddTypeの作戦でOKだと思いますが、 cgiの定義がcgi-scriptとかぶって、 エラーになっているのだと思います。 PerlのCGI等は、動かなくなる思いますが、 httpd.confのcgi関係の部分をコメントアウトしたらどうでしょう? AddType ■■■ cgi AddHandler ■■■ cgi LoadModule cgi_module modules/mod_cgi.so(?) AddModule mod_cgi.c(?) といったところだと思います。 たぶん、PerlのCGIとの共存(同一拡張子)は、 無理だと思います。 プロセス起動の普通のCGIを使えば、原理的にできるのですが、 ActivePerlなどを見る限り、Windowsでは、 最初の行のスクリプトエンジン(?)の起動設定が無視されるような気がします。 間違っていたらすみません。

oneworld
質問者

補足

下記2行はコメントアウトいたしました。 AddType ■■■ cgi AddHandler ■■■ cgi 下記2行はconfにありません。 LoadModule cgi_module modules/mod_cgi.so(?) AddModule mod_cgi.c(?) 実行結果はファイルのDL窓が出現しました。 >たぶん、PerlのCGIとの共存(同一拡張子)は、 >無理だと思います。 ご指摘の通り、Perlもインストールしておりますが、 何故か動きませんので、設定が違うみたいです。 PHPを優先に固めようとしております、が、「PerlのCGIとの共存は無理」ですか・・・ >< >最初の行のスクリプトエンジン(?)の起動設定が無視されるような気がします。 ご指摘ありがとうございます^^ よーく考えれば、ですよね。 UNIXでの話しだって事に気が付きました。 もう少し調べて実験してみますので、今回は締め切らせていただきます。 またアドバイスを宜しくお願い致します。

その他の回答 (7)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.7

どうやら、PHPをCGIとして動作させるのではなく、 単に拡張子を.phpじゃなくて、.cgiで動かしたいだけのようですね? 拡張子の偽装(?)は、Apacheのhttpd.confに AddType application/x-httpd-php4 .php .cgi 又は AddType application/x-httpd-php .php .cgi と記載しますです。 自分の好き勝手な拡張子をつけたりしてもかまいません AddType application/x-httpd-php .moe .aaa .cgi .php とかだと、 index.moe index.aaa index.cgi index.php の順で先に記載した拡張子を優先して動いてくれます あと、当然ですが、Apacheの再起動は必要ですよ >httpd.confに追記しましたがエラーでした。 >cgiファイルのヘッドに下記のパスを入れてあるのですがパス指定がミスってるのでしょうか? 他に設定する必要は全くないです

oneworld
質問者

補足

ご対応ありがとうございます。 拡張子の優先順位等の詳細説明は助かります^^ 残念ながらApacheの再起動後でも、だめでした。

  • petit-C
  • ベストアンサー率46% (7/15)
回答No.6

AddType application/x-httpd-php4 .php .cgi というような感じで、 cgiにMIMEタイプを関連付ける必要があります。

oneworld
質問者

補足

ご対応ありがとうございました。 AddType application/x-httpd-php4 .php .cgi httpd.confに追記しましたがエラーでした。 cgiファイルのヘッドに下記のパスを入れてあるのですがパス指定がミスってるのでしょうか? php.exeの場所指定 #!C:/Apache/php/cli/php

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.5

>「aki-web」サイトさんのまんまです そのサイトの内容は拡張子*.phpのまま,CGI動作をさせるための設定方法です。 *.cgiでは動作しませんよ。

oneworld
質問者

補足

ご対応ありがとうございました。

noname#9414
noname#9414
回答No.4

ちなみにですが、拡張子cgiの実行をPHPで行うように設定してあるのでしょうか? そもそもCGI版とSAPI版の違いを考えていただいた方がいいと思いますが、CGI版だからといって、拡張子cgiが無条件で実行されるわけではありません。 そこら辺はどう設定されていますか? ↑httpd.confの820行目付近、ってやつ

oneworld
質問者

補足

「aki-web」サイトさんのまんまです^^ AddType application/x-httpd-php4 .php Action application/x-httpd-php4 "/php/php.exe" PHPはC:/Apache/php/にインストールしました。

回答No.3

#1再投稿です。 PHPのインストール(CGI)をご覧になられてテストをされようとしているのでですよね? 再度下記のURLをご覧になって確認願います。 ※済みません。XP上(ローカル)で実行…と言う事でしたね。見落としてました。<パーミッション

参考URL:
http://aki.adam.ne.jp/php/winxp/winxp02_1.html
oneworld
質問者

補足

PHPのインストール設定は各サイトの説明でも出来なくて困っておりましたが、やっと「aki-web」サイトさんのおかげで成功致しました。 現在は拡張子PHPでは問題なく稼動しております。 サイトでの設定内容ではPHPのインストール先定義だけのようです・・・たぶん perlでは確かcgiが稼動するフォルダの定義も必要みたいですが(perl未経験者です^^;)、PHPのCGI版でもそのような定義が必要なのか、或いはロジック内での呼び出し方法があるのでしょうか?

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.2

phpではフォームから送られてきたデータをデコードの処理をしなくても自動的にしくれますが、CGI(perl)は面倒ですがデコードの記述をしないと送られてきた変数を認識することができなかったと思いますよ

oneworld
質問者

補足

ご対応ありがとうございます。 perlではなくPHPのCGI版として使用したいのです。 (;^_^A アセアセ・・・

回答No.1

パーミッションの設定は?

oneworld
質問者

補足

ご対応ありがとうございます。 パーミッション設定はUNIXでのお話ですか? winXPでもするのでしょうか? PHP初心者にて変な質問ですみません。m(_ _;)m

関連するQ&A

専門家に質問してみよう