目次
Internal Server Error というメッセージが表示される
原因1実行ファイルまたはディレクトリのパーミッションが間違っている
原因2インタプリタのパスが間違っている
原因3スクリプトの改行コードが正しくない
対策3
- テキストエディタでCGIスクリプトを編集した時に改行コードが変更されることがあります。改行コードは
<LF>
または<CR+LF>
にしてください。 - FTPでファイルを転送した時に改行コードが変換されることがあります。アスキーモードで転送して不具合が生じる場合は、バイナリモードで転送してみてください。
原因4インタプリタのアップデートで仕様が変わった
対策4-1
Perl5.22以降では、 defined(@array)
および defined(%hash)
は致命的なエラーになりました。この仕様変更によりPerlライブラリ jcode.pl はエラーを発生します。 jcode.pl の682行目辺りのコードを次のように修正することでエラーを回避することができます。
修正前
sub z2h_euc { local(*s, $n) = @_; &init_z2h_euc unless defined %z2h_euc; $s =~ s/($re_euc_c|$re_euc_kana)/ $z2h_euc{$1} ? ($n++, $z2h_euc{$1}) : $1 /geo; $n; } sub z2h_sjis { local(*s, $n) = @_; &init_z2h_sjis unless defined %z2h_sjis; $s =~ s/($re_sjis_c)/$z2h_sjis{$1} ? ($n++, $z2h_sjis{$1}) : $1/geo; $n; }
修正後
sub z2h_euc { local(*s, $n) = @_; &init_z2h_euc unless %z2h_euc; $s =~ s/($re_euc_c|$re_euc_kana)/ $z2h_euc{$1} ? ($n++, $z2h_euc{$1}) : $1 /geo; $n; } sub z2h_sjis { local(*s, $n) = @_; &init_z2h_sjis unless %z2h_sjis; $s =~ s/($re_sjis_c)/$z2h_sjis{$1} ? ($n++, $z2h_sjis{$1}) : $1/geo; $n; }
対策4-2
Perl5.26以降では、外部ファイルを読み込む際の検索パス(@INC
)からカレントディレクトリ(.
)が削除されました。この仕様変更によりカレントディレクトリのライブラリやモジュールが読み込めなくなる場合があります。
スクリプトの先頭に次の2行を追加することで、検索パスにカレントディレクトリを含めることができます。
#!/usr/local/bin/perl use FindBin; use lib $FindBin::Bin;
原因5.htaccessのエラー
対策5
.htaccessファイルの記述ミスで Internal Server Error が発生することがあります。同じディレクトリのHTMLファイルにアクセスしてもエラーが発生する場合は、これが原因です。.htaccessファイルの記述を見直してください。
真っ白いページが表示される
原因1PHPプログラムのエラー
対策1
PHPの初期設定ではエラー表示が Off になっています。.user.ini ファイルでエラー表示を On にしてエラーが表示される場合は、そのメッセージに従って問題を解決してください。
.user.iniの設定例
display_errors = On