###前提・実現したいこと
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は、直近で修正・加筆等はしていませんが、
これまでは動作しておりました。
さくらのレンタルサーバーを使用しています。
原因・解決法・手がかりなどをご教授いただけますと幸いです。
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー