質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Q&A

解決済

2回答

4230閲覧

AH01276のエラーが出る

m_nan

総合スコア11

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

0グッド

0クリップ

投稿2019/05/15 04:43

編集2019/05/15 08:23

###前提・実現したいこと
CGIが正常に動作するようにしたいです。
formmail.htmlというのが表示され、inputなどでチェックを付けた内容を送信したいです。

先日も質問させていただきました。
エラー内容として記載した箇所について、修正方法を教えていただき直りましたが、
それ以外にも原因があるようでしたので、質問を起こさせていただきました。

前回の質問
https://teratail.com/questions/189342

###発生している問題・エラーメッセージ
request/db-test/database.cgi?cmd=fm
を押すと、request/db-test/lib/template/formmmail.htmlが開きます。
formmail.htmlのデザインや文言を修正し、HTMLファイルのみをリモートサーバーにUPしました。
ブラウザで確認した所、文字化け等があったため修正して再度同じ作業をした所、真っ白になって何も表示されなくなりました。

なお、formmail.htmlは、サーバーに存在しており、request/db-test/lib/template/formmmail.htmlをブラウザのバーに直接入力するとHTMLは確認できます。

ブラウザには、「404」のようなエラーメッセージは表示されておりません。
Webサーバーのエラーログを見ると下記のように記載があります。

[Wed May 15 11:15:21.994847 2019] [cgi:error] AH01215: \t(Maybe you should just omit the defined()?):

5/15 遡って見つかった他のエラーを追記しました。下記です。

[Tue May 14 11:18:36.886298 2019] [autoindex:error] AH01276: Cannot serve directory : No matching DirectoryIndex (index.html,index.htm,index.shtml,index.shtm,index.cgi,index.php,index.hdml) found, and server-generated directory index forbidden by Options directive

該当のcgi内には、definedが12か所ありますが、どのように影響しているか分からないので
削除や修正をしてよい部分なのかどうか判断が付きません。
1)

############## # Myglob # ############## sub Myglob{ my($dir,$type)=@_; my($file,@list); opendir(DIR,$dir) or &Error('ディレクトリOPENに失敗しました。'); while(defined($file=readdir DIR)){ $file=~/^.{1,2}$/ and next; ($type ne '' and $file!~/$type$/) and next; push(@list,$file); }closedir(DIR); return@list;}

2~12)

# ProxyCheck # ################## sub ProxyCheck{ my($proxy,$domain,$vip,$error,$perror)=@_; if($proxy){ if($DomainName=~/squid|proxy|cache|delegate|keeper|^firewall|^dns|^mail|^www|^ns\d{0,2}.|us$|uk$|au$|fi$|ca$|de$|kr$|tw$|it$|edu$|com$|org$|net$/i || $ENV{HTTP_USER_AGENT}=~/squid|via|delegate|httpd|proxy|cache|Turing|ANONYM/i || !$ENV{REMOTE_ADDR} || defined $ENV{HTTP_X_FORWARDED_FOR} || defined $ENV{HTTP_FORWARDED} || defined $ENV{HTTP_PROXY_CONNECTION} || defined $ENV{HTTP_XROXY_CONNECTION} || defined $ENV{HTTP_XONNECTION} || defined $ENV{HTTP_VIA} || defined $ENV{HTTP_CLIENT_IP} || defined $ENV{HTTP_X_LOCKING} || defined $ENV{HTTP_SP_HOST} || defined $ENV{HTTP_CACHE_INFO} || defined $ENV{HTTP_CACHE_CONTROL} ){ $error=1; $perror=1; } }if(!$error and $domain){ unless(&DomainCheck('out')){ $error=1 } } if($error and $vip){ unless(&DomainCheck('vip')){ $error=0 } } if($error){ if($perror){ &Error('只今、プロキシ経由の更新を制限しております。<BR>ブラウザ設定でプロキシを使用しないドメイン欄に<BR>ここのURLのドメインを設定してください。<BR>ご迷惑をおかけして申し訳ありませんが<BR>ご理解の程よろしくお願い致します。') } &Error('只今、あなたが使用しているホストからの<BR>データ更新を制限しております。<BR>可能でしたら他のホストを使用して<BR>もう一度アクセスしてください。'); }1;}

本更新前テスト用に、db-testというフォルダにCGIとそれに関与するHTMLを用意しています。
dbというフォルダに入れてある本更新用のCGIとHTMLは問題無く作動しております。
db・db-test内のCGI・HTMLを見比べたところ、
db内のdatabase.cgiにのみ下記の記載がありました。

sub EncodeM{ my$line=shift; $line='=?ISO-2022-JP?B?'.&EncodeB($line).'?='; return($line);}

db-test内のdatabase.cgiは、直近で修正・加筆等はしていませんが、
これまでは動作しておりました。

さくらのレンタルサーバーを使用しています。
原因・解決法・手がかりなどをご教授いただけますと幸いです。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/05/15 06:08

タイトルはなるべく質問要件に寄った内容を記載してください。 「続き」や「その2」とか書かれてもタイトルが同じであれば別問題として認識しづらいですし、それならタイトルをもう少しきちんと要件(起きている問題の具体的な内容や実現したいこと)を書いておいて質問本文に「関連質問」としてリンクされたほうが良いです。 あと細かいのですが「真っ白になる」という表現はあまりエンジニア的にはよくなかったりします。 実態は「プログラムが出力処理を行う前に処理中断するレベルのエラーを吐いて止まった」状態なので、「真っ白になる」というより「~~というエラーで画面出力が行われない」と書いたほうがイメージも付きやすく、具体的になります。
m_nan

2019/05/15 06:33

ご指摘ありがとうございます。 タイトルは、書いていただいた言葉をお借りしなおしました。 また、前回の質問も本文にリンクを貼りました。取り急ぎ御礼です。ありがとうございました。
m.ts10806

2019/05/15 06:35

>出力処理を行う前に処理中断するレベルのエラー えっと。それだと同じように「真っ白になった」場合、同じタイトルになりますよ。 エラーメッセージが出てるのですから、そのエラーメッセージにかえましょう。 (ファイルパスは要らないのでエラーコードとエラーメッセージ本体ですね)
m_nan

2019/05/15 08:01

理解できておらずすみません。 他に見つかったエラーコードを本文中に追記し、タイトルも変更しました。 エラーログをたどるしかエラーを探す方法しか知らないのですが、それ以外にも探す手立てがあるようでしたらあわせてご教授いただけますと幸いです。
m.ts10806

2019/05/15 08:38

>エラーログをたどるしかエラーを探す方法しか知らない ブラウザ上に表示できなくもないですが、あくまでデバッグ・開発時のときのみにすべきなので、「エラーログをたどる」ので良いと思います。
guest

回答2

0

自己解決

formmail.htmlに記載したコードが問題でした。
「 (全角スペース)TM」と入力した箇所が文字化けしてしまったため、修正するために「 \T\M\」と¥を必要以上に入れた事が原因だったようです。
「 (全角スペース)\TM」に修正したら、問題無く表示されました。

見当違いのエラー探しばかりしてしまい、基本的な内容の見直しが漏れておりました。
コメント下さった方々、誠にありがとうございました。

投稿2019/05/16 02:47

m_nan

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

とりあえず1)の方は下のように修正してみてください。このdefinedは要らないはずです。

while(my $file=readdir DIR){

投稿2019/05/15 06:12

KojiDoi

総合スコア13669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m_nan

2019/05/15 08:01

ありがとうございます。 修正して再度サーバーにアップしましたが、表示されませんでした。 引き続き、原因を探してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問