[ Top > 日記 > 2020年 ]

CGIを組み込むときの注意点

2020年4月23日

私はこのサイトの中でCGIプログラムを使っています。現時点では掲示板と全文検索プログラムを組み込んでおり、いずれもKENTさんの作品です。

このようなプログラムを作る手順としては以下のようになります。
  1. 自作またはダウンロードしたプログラムに必要な設定をする。
  2. 目的とするサーバーにアップロードする
  3. 動作させてみる

しかし正しく設定したつもりでも、実際に動作させてみるとしばしばエラーが出てしまいます。それらについて、私なりのチェック項目を並べてみます。初心者向けです。

Internal Server Error(500番のエラー)

最も頭を悩ませるのはこれです。

多いのは、改行コードが違っている場合です。UNIX系OSでスクリプトを動かすには、改行コードがLFでなければなりません。

そんなの常識だよ、と思われるかもしれませんが、実は盲点なのです。

私が気づかなかったのは、あるCGIプログラムのサイトに多数のスクリプトが載っていて、あるものはスクリプトの改行コードがLFだったのに、別なものはCRLFであったことです。そのため「このサイトのスクリプトはすべてLFだな」と思い込んでしまったのです。

私はスクリプトをアップロードするとき、すべてバイナリモードでやっています。手軽だからです。もちろん事前準備としてCRLFが使ってあるスクリプトはLFに変換しています(通常はテキストエディタで開きます。どうせperlのパスを確認する必要があるので)。

他に500エラーが出て私が頭を悩ませたのは、特定のモジュールがうまく働かなかった場合でした。自宅サーバーでどう直してもエラーが出てしまい、use CGI::Carp〜をコメントアウトしたら正常に動いたことがありました。

Permission denied(403番エラー)

頻度は少ないのですが、たまにあります。一番多いのはアクセス権の誤りですが、スクリプトを実行不可能なディレクトリにおいた場合にも発生します。apacheの設定も大事です(特に自宅サーバーでは注意)。

Not Found(404番エラー)

これもたまにあります。ひたすらファイルの位置を確認するしかありません。


[ Top > 日記 > 2020年 ]