
久々にAutoCAD以外のネタで書いてみました。
最近、Raspberry Piにインストール済みのパッケージがアップデートされないなと思って、利用リポジトリに日本のサーバを追加すると、一気に更新された。ところが、CGIが画像のようになってしまい、動かなくなった。Apacheの設定が変わったのか?と調べてもなかなか解決せず、はまってしまった。
Apacheの設定自体は悪くなさそうだが、細かい設定は修正。まずは文字コードの修正。/etc/apache2/conf-available/charset.conf にてデフォルトの文字コードをUTF-8に修正。
AddDefault Charset UTF-8
次にCGIを使うためにsuEXEC機能を用いるが、どこのフォルダでも機能有効というわけにいかないので /etc/apache2/suexec/www-dat の設定を以下にする
/ver/www
public_html/cgi-bin
/home/*/public_html
上2行はデフォルトで記述済み、3行目にhtmlをおいているフォルダを指定。1番上に追加はダメらしい(英語の解説を読んでそう解釈したが、あっているかは?)
これで簡単なCGI(Hello Worldを表示するぐらい)のものは動き出したが、以前として動かない。ここから苦戦していたが、CGIのソースの修正が必要だという結論になった。
1つは、CGIからモジュールを読み込む際の、ファイルのパスの書き方がNGだった。
require "xxx.pl"; #これはNG
require "./xxx.pl"; #これはOK
もう1つは同じくモジュールで読み込んでいたjcode.plが悪さしているらしい。Apache2.4 CGI動かない(原因はJcode.plだった)にもあるが、perlをバージョンアップするとjcode.plを使っているとエラーを吐くようだ。今はjacode.plが公開されているとのことで、早速入手したところ、Internal Server Errorはなくなった。
一気にモジュールのバージョンアップをしてしまったので、何が何だか分からなくなってしまいました。こまめにバージョンアップはすべきと反省。