cgiを組もうと思い、まずは簡単なもので試そうと思ったのですが、
うまくいかず困っています。
↓プログラムは、こんな感じです。
ファイル名:index.cgi
#!/usr/bin/perl
print "<html>";
print "<body>";
print "abc";
print "</body>";
print "</html>";
<やってみたこと>
・Perlのパス「#!/usr/bin/perl」 が間違っていないか?
which perl で
/usr/bin/perl
とでます。
・Apache の設定が正しく行なわれているか?
http://localhost
でindex.htmlがきちんと表示できています。
・「hello.cgi」 の設置場所を間違っていないか?
プログラムソースが出るということは、
間違っていないのではないでしょうか?
・ためしに実行してみた
TELNETで
./index.cgi
<html><body>abc</body></html>
とでてきました。
これはちゃんと動いているのでは??
何か勘違いしていますか?
お気づきの点を教えてください。よろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
>プログラムソースが出るということは、
>間違っていないのではないでしょうか?
ここを見てませんでした。
ソースがそのまま表示されるのならApacheのhttpd.confでCGIの設定をしていないのではないでしょうか。
Options ExecCGI
とか
AddHandler cgi-script .cgi
です
以下をやってみましたが、
Forbidden
You don't have permission to access /hello.cgi on this server.
とでました。
パーミッションは777にしてみたのですが・・・??
~~~~~~~~~~~~~~~
CGIを置く場所を指定します
ScriptAlias /cgi-bin/ "ローカルパス"
<Directory "ローカルパス">
CGIの実行を許可します。
AddHandler cgi-script .cgi .pl
拡張子とPerlを関連付けます。
AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .pl
ディレクトリインデックスにCGIを登録します。
DirectoryIndex index.html index.cgi
No.6
- 回答日時:
なんか状況がさっぱり掴めませんけど、、、
1.そもそもOSとApacheのバージョンは何でしょうか?
2..cgiを置く場所は?ScriptAliasで指定したディレクトリ? ドキュメントルートの下辺り? それともユーザーディレクトリ?
3. 置きたいCGIは hello.cgiなの? それとも http://localhost/hoge/ でアクセスして index.cgiを表示したいと言う意味なの?
一応、汎用的な事で答えると
(1) パーミッション について 例えば/home/test/に置いた
wwwディレクトリが公開コンテンツを置くディレクトリで、
その中に hello.cgi を置いた場合
/home/ と /home/test/ と /home/test/www/ は701 でOK(ディレクトリ一覧を表示するならwwwは705)
hello.cgi は705でOK(Suexecなら700でOK)
(2)ScriptAlias で設定されたDirectoryに置くのならOptionsもAddHandlerも不要です
(3) ScriptAlias 以外の場所ならOptions ExecCGI とAddHandler cgi-script .cgi の指定が必要です
ありがちなミスは この2つの記述を違う<Directory コンテナに記述しているとか 記述後httpdを再起動していないとか?
あるいは .htaccess に記述するなら 該当コンテナにAllowOverride Noneとされているとか?
http://httpd.apache.org/docs/2.0/ja/mod/core.htm …
http://httpd.apache.org/docs/2.0/ja/mod/core.htm …
No.2
- 回答日時:
うまく動かないというのはどういうふうに変なのか具体的に書いてみると,いろいろアドバイスが得られると思います.
僕が気がついたのは2点
・perlのソースが表示されてしまう
→ .cgiという拡張子がCGIであるという登録ができていない.
.htaccessとかhttpd.confで設定
・何も表示されない
→ヘッダが抜けている.
#!/usr/bin/perl
print "Content-type: text/html"; ←この行を追加
print ""; ←この行を追加
print "<html>";
以下略
この回答への補足
→ .cgiという拡張子がCGIであるという登録ができていない.
.htaccessとかhttpd.confで設定
これかもしれません。
httpd.confに何か書かないといけないのですね?
No.1
- 回答日時:
パーミッションは設定されてますか?
もしサーバーがUNIX系であれば、改行コードが CR+LF になってませんか?
もしエラーメッセージ番号が499以下であれば、ディレクトリをどこかで勘違いしている可能性があります。
この回答への補足
すいません!
どうなっちゃうか、を書いていませんでした。
ブラウザでアクセスすると、
#!/usr/bin/perl
print "Content-type: text/html\n";
print "\n";
print "Hello World!";
みたいにソースそのものがでてきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlのrequireの動き方について...
-
Quantifier follows nothing in...
-
土曜日の26時って何曜日の何時...
-
月の第一週とは
-
よくある 『 第○(1・2・3・4・...
-
エクセルで毎月第2週日の水曜日...
-
燃えるゴミの日は何曜日ですか?
-
VBAでExcelのヘッダーに文字列+...
-
毎○曜日って、使いますか?
-
平日朝の国道246線混雑状況につ...
-
週2回のペースって だいたい何...
-
c言語の質問です。 ある月のカ...
-
file_get_contents でリダイレ...
-
フォームで送信ボタンを押すと...
-
1975年(昭和50年)4月15日...
-
cgiで拡張子.cgiと拡張子.pl...
-
バイナリファイルのアップロー...
-
無料掲示板で書き込みは特定の...
-
.cgiをhtmlに乗せる方法を教え...
-
apacheでPerl CGIが作動せず、5...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cgiとplとpm
-
perlのrequireの動き方について...
-
jcode.plが読み込めない
-
自CGIのURLのパス部分を取得す...
-
Perlソースを2つのファイルに分...
-
Perlのデバッグ方法って。。。...
-
mt-check.cgiでForbiddenエラー...
-
webからroot権限のコマンドを実...
-
useとrequireでエラー
-
画像のURLの変数を別のCG...
-
Quantifier follows nothing in...
-
require文が実行できない
-
コマンドラインでGET or POSTで...
-
apacheのCGI設定について教えて...
-
Not Found 404エラー時のCGI出力
-
htmlからテキストを返すperlを...
-
perlのcgiで、変数の中身を表示...
-
use CGI
-
フォームでインクリメント入力→...
-
Internal Server Error
おすすめ情報