初めて質問させていただきます。
会社のHPで、欲しいカタログを選択してリクエストを承るサイトを運営しています。
定期的に更新作業を行っており、通常と同じ動作を行ったつもりなのですが、
上手く動作せず困っております。
前提・実現したいこと
formmail.htmlが表示され、正しくリクエストフォームを動作させたいです。
発生している問題・エラーメッセージ
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は確認できます。
本更新前のテストとして、CGIとそれに関与するHTMLを用意しており、
本更新用のCGIとHTMLは問題無く作動しております。
そちらのCGI・HTMLと今表示されなくなってしまったCGI・HTMLと見比べたのですが、
表記が違っている箇所等は見つけられませんでした。
エラーメッセージ等も見当たらず、原因が全く分からないというのが現状です。
該当のソースコード
下記が該当するか定かではないのですが、お互いが関与しあっていそうな箇所は下記の通りです。
HTMLのコード
<form action="$BaseDir/$MainCGI" method="POST" name="MyForm"> <input type="hidden" name="cmd" value="fma"> <input type="hidden" name="SID" value="$PID">
CGIのコード
################ # SendMail # ################ sub SendMail{ my($type,$to,$from,$cc,$bcc,$fname,$attach)=@_; my($boundary,$file,$path); (!$to) and return(0); if($fname ne ''){ $fname=&EncodeM($fname); $from="$fname <$from>"; }my@files=@{$attach}; local($subject,$body)=&$type; &jcode::convert(*subject,'jis'); &jcode::convert(*body,'jis'); $subject=&EncodeM($subject); open(ML,"| $CNF{Mail}{Sendmail} -t") or return(0); # open(ML,">>$DataDir/$type.txt");# ─TEST print ML "MIME-Version: 1.0\n"; print ML "To: $to\n"; print ML "Cc: $cc\n" if($cc); print ML "Bcc: $bcc\n" if($bcc); print ML "From: $from\n"; print ML "Subject: $subject\n"; print ML "X-Mailer: $Ver\n"; print ML "X-Http-Referer: $BaseDir/$MainCGI\n"; print ML "X-User-Agent: $ENV{HTTP_USER_AGENT}\n" if($type=~/_admin$/i); print ML "X-Host: $ENV{REMOTE_ADDR}\n" if($type=~/_admin$/i); if(@files>=1){ $boundary='==='.$PID.time.'==='; print ML qq(Content-Type: multipart/mixed; boundary="$boundary"\n\n); print ML "--$boundary\n"; }print ML "Content-Transfer-Encoding: 7bit\n"; print ML qq(Content-Type: text/plain; charset="ISO-2022-JP"\n\n); print ML "$body\n"; foreach$path(@files){ (!-e$path) and next; ($file)=$path=~/([^:/\]+)$/; print ML "--$boundary\n"; print ML qq(Content-Type: application/octet-stream; name="$file"\n); print ML qq(Content-Disposition: attachment; filename="$file"\n); print ML "Content-Transfer-Encoding: Base64\n\n"; my$tmp=&EncodeB(undef,$path,'n'); print ML "$tmp\n"; }print ML "--$boundary--\n" if(@files>=1); print ML "\n"; close(ML);}
当方について
HTMLの編集はある程度出来ますが、CGIは何が何だかさっぱりという状態です。
前任者から必要な所は教えてもらっているのですが、CGIは無知に等しいです。
見ていただくにあたり、不足している箇所等ありましたら
すぐに確認致しますので、ご教授いただけますと幸いです。
どうぞ宜しくお願い致します。
5/14 18:30追記
サーバーのエラーログを確認しました。(何度もUPしたせいで同じ表記がたくさんあります。)
[Tue May 14 17:17:21.572303 2019] [cgi:error] [pid 96140] [client 123.255.245.251:0] AH01215: defined(%hash) is deprecated at ./lib/jcode.pl line 641.: /当社Web/request/db-test/database.cgi
[Tue May 14 17:17:21.572400 2019] [cgi:error] [pid 96140] [client 123.255.245.251:0] AH01215: \t(Maybe you should just omit the defined()?): /当社Web/request/db-test/database.cgi
[Tue May 14 17:17:21.572434 2019] [cgi:error] [pid 96140] [client 123.255.245.251:0] AH01215: defined(%hash) is deprecated at ./lib/jcode.pl line 648.: /当社Web/request/db-test/database.cgi
これは、「jcode.pl」といつファイルの641行目と648行目に問題があるという事なのでしょうか?
ちなみにそのファイルの該当箇所(639~651行目)は以下の通りです。
sub z2h_euc { local(*_, $n) = @_; &init_z2h_euc unless defined %z2h_euc; s/($re_euc_c|$re_euc_kana)/$z2h_euc{$1} ? ($n++, $z2h_euc{$1}) : $1/geo; $n; } sub z2h_sjis { local(*_, $n) = @_; &init_z2h_sjis unless defined %z2h_sjis; s/($re_sjis_c)/$z2h_sjis{$1} ? ($n++, $z2h_sjis{$1}) : $1/geo; $n; }
宜しくお願い致します。

回答2件
あなたの回答
tips
プレビュー