>>>4件の記事があります。

perlのバージョンアップにより動かなくなったCGI

今まで何の問題もなく動いていたのに、
ページを開くと”Internal Server Error”という見出しのあとに
数行の英文が表示されるのみ。
こんな経験はありませんか?
まったくの個人的な解決法ではありますが、
先ず確認すべきことは
.plファイルのパスが適切に指定されているかどうかです。
メインのCGIファイルと同一フォルダにある必要があると書いている人がいますが、
パスが正しく書かれていれば親フォルダでも問題ないようです。
ただし、同一フォルダに置く場合はファイル名だけを書くのではなく”./xxx.pl”とします。
サーバー運営側の説明によると、
スクリプトに「print “Content-type: text/html\n\n”;」の一文が抜けている可能性がある
ということですが、これは基本的なことなので、
プログラムを書く人も忘れないと思うのですが如何でしょうか。
しかし、前述の解決策で問題が解消されないときは確認してみるべきでしょう。
ファイルの属性を疑えという意見もありますが、今まで動いていたのであれば
属性に問題があるとは考えにくいと思います。
ここまで説明した方法でも直らない場合、次に試してみるべきことは
「jcode.pl」を「jacode.pl」に変えてみる。
「jacode.pl」は自分で調べてダウンロードしてください。
これでもダメならあとはシンタックスエラーを疑っても良いのではないでしょうか。
エラーのチェックは、Kent Webさんが公開している「Perl Checker」を使うと簡単にできます。
以上、実際これらの方法で動くようになったので、やってみる価値はあると思います。

↓2022/05/16 加筆
“Internal Server Error”とならずにページが表示されたとしても
CGIが機能していない場合があります。
原因のひとつとして考えられるのは、Perlのパスです。
!#usr/local/bin/perl となっていなければならないところが、
!#usr/bin/perl となっていないか確認してください。
例え文法的に合っていたとしても、ちゃんと動かない場合があるようです。

PHPを最新版にしたら・・・

ただ単に記事の表示がOKだからといって安心してはならない。
コメントがちゃんと受け付けられて表示されるかまでチェックする必要がある。
これは採用しているテーマによっても違いが出てくるので、
古いテーマほど注意が必要だ。
あと、採用しているjavascriptによっても不具合が出てくるようだ。
特にモバイルサイトでドロワーメニューを採用する場合はより注意が必要だと思う。
新しいバージョンのPHPはスピードも速いみたいなので、進んで利用したい。
それに、いつまでもダッシュボードに「PHPの更新が必要です」なんて表示されるのも嫌ですからね。

Jcode.pmを別のファルダに置いて使う場合

すみません、2015/12/04に加筆しております。
Jcode.pmを利用する場合、以前は下の通りに設定すれば問題なく動いていました。
しかし、ロリポップのサーバー移転を申し込んだところ、急に機能しなくなりました。
まさか、このことが原因だとは思わなかったので、相当はまりました。
試しに use lib ‘../’ の行を削除したところ、無事に動くようになりました。
なお、jcode.pmのファイルはcgiと同じフォルダに置く必要はないようです。

------------ 以下、以前までの投稿 ------------

jcode.plの場合は、例えば直ぐ上のディレクトリに置くのであれば下のように指定が簡単だが、
Jcode.pmの場合はちょっとややこしい。

require '../jcode.pl';

Jcodeをいくつかのcgiで使う場合は、直ぐ上のディレクトリに置けば
それだけサーバーにアップするファイルの量が減って、容量の節約になる。
まあ、ちょっとしたことだが、整然としたソースを書くことにも
つながると思うので覚えておいて損はないと思う。
余談はさておき肝心な指定コードだが、下の通りだ。

use lib '../';
use Jcode;

これが、調べてもなかなか見つからないから不思議だ。

いや~、完全にはまってしまった。

何かと言うと、utf-8のBOM付きtextファイルをBOM無しにする方法だ。
ファイルのみを扱うのであれば、UTF-8Nで保存すれば簡単にできそうだが、
phpでサーバーに書き出されたデータをBOM無しで直接読み込むのは
筆者のようにphpに疎いと巧くいかない。
色々と調べてみると、BOMのことをゴミと呼んでいる人もいるぐらいだから
やはり厄介なものなのかなぁ。
データを読み込んだところをSafariで見ると、確かにゴミみたいに表示されている。
IEやFirefoxだと一行分空いた感じになり、ソースを見ると影も形もない状態だ。
BOMの存在に気付かない間は、自分のコーディングが拙いと完全に思い込んでいた。
長い時間を費やしたにも拘わらず、残念ながら良い方法を見つけることはできなかった。
今回は付け焼刃的な処置だとは思うが、データの中で任意の文字以降を読み込むという
方法を採用することにした。
最初は2文字目以降という設定にしてみたが、巧くいかなかったので
3文字目以降と変更したところ巧く機能してくれた。
まあ、こんなことが何方かの役に立ってくれれば幸いだ。