一般的な質問

  1. @niftyなんですが、うまく動作しません。
  2. Internal Server Errorが出て、動作しません。
  3. other権限でCGIが実行されるサーバですが、動作しません。(infoseek isweb等)
  4. Redhat, Fedora でサーバを自前で構築したが、FTP で CGI を転送してもエラーになる
  5. Windows サーバでも利用できますか?

1. @niftyなんですが、うまく動作しません。

futomi's CGI Cafeで公開している CGI はすべて、Perl5 の標準モジュールを使っています。@niftyのホームページサーバには、Perl5の標準モジュールが実装されていませんので、残念ながら、動作いたしません。

2. Internal Server Errorが出て、動作しません。

Internal Server Error の原因は多岐にわたり、特定は難しいのですが、少なくとも以下の項目を確認して下さい。

サーバの環境

  • 独自 CGI の設置が許可されていること。プロバイダーによっては CGI 設置を許可していません。そのようなサーバに CGI を設置したとしても動作いたしませんので、ご確認ください。
  • Perl5 がサーバにインストールされていること。Perl4 では動作しません。
  • Perl5 の標準モジュールがインストールされていること。具体的には、「CGI.pm」「Time::Local」が動作する必要があります。
  • サーバが Unix 系 OS であること。fuotmi's CGI Cafe で公開している CGI はすべて UNIX サーバを前提に作成されております。Windows 系サーバでは動作しない場合があります。

CGIの設置

  • サーバへファイルを転送する際に、転送モードを正しく設定して下さい。ファイルごとに転送モードを指定する必要があります。FTPソフトによっては自動認識するものがありますが、ファイルの拡張子によってはバイナリーモードで転送する場合があります。マニュアルで指定して転送することをお勧めします。
  • CGIファイルの1行目のPerlのパスを正しく設定してください。サーバによってperlのパスは異なります。ご自分の環境に合わせて修正してください。配布された状態では、1行目は「#!/usr/local/bin/perl」となっております。
  • ファイルパーミッションを正しく設定して下さい。サーバによってファイルパーミッションは異なります。必ずプロバイダーやレンタルサーバ業者から指定されたパーミッションに設定して下さい。

3. other権限でCGIが実行されるサーバですが、動作しません。(infoseek, isweb等)

ohter権限で実行される環境においては、パーミッションを変更することで動作するようです。

基本的に、other権限でCGIが実行される場合には、ログファイルなどのようなCGIが書き込むファイルは、otherに対して書き込み権限が必要となります。また、CGIが自動生成する場合には、生成されるファイルの格納ディレクトリ自体に、otherに対して書き込み権限が必要となります。例えば、「infoseek isweb」の場合には、

  • ログファイル: 606
  • ログ格納ディレクトリ: 707

として下さい。格納ディレクトリのパーミッションはotherに書き込み権限があっても「706」では動作しませんので、ご注意ください。

4. Redhat9, Fedora でサーバを自前で構築したが、FTP で CGI を転送してもエラーになる

 Redhat, Fedora 等の Redhat 系 Linux は、インストーラーで OS をインストールすると、FTP サーバとして vsftpd がインストールされます。ところが、デフォルトの設定で ASCII モード転送が無効になっている場合があります。その場合、いくら FTP ソフトで ASCII モードに明示的に指定してファイルを転送しても、BINARY モードで転送されてしまいます。ご利用のサーバの vsftpd の設定を変更して、ASCII モード転送を有効にして下さい。

 vsftpd の設定ファイルは、/etc/vsftpd/vsftpd.conf にあります(ご利用の環境によって異なります)。ターミナルもしくは別のパソコンから telnet もしくは ssh を使ってマシンにアクセスし、root 権限になってから、vsftpd.conf を vi 等のエディターで開いて下さい。

#ascii_upload_enable=YES
#ascii_download_enable=YES

となっている箇所がありますので、この 2 行のコメントを外して(行頭の "#" を削除して)、次の様にして下さい。

ascii_upload_enable=YES
ascii_download_enable=YES

変更して保存したら、vsftpd を再起動します。シェルから次のコマンドを実行して下さい。

/etc/rc.d/init.d/vsftpd restart

これで、設定が反映され、ASCII モード転送が有効になります。

5. Windows サーバでも利用できますか?

 当サイトで配布している CGI は、UNIX サーバを前提に作成されております。そのため、Windows サーバでは動作しない場合がありますので、ご注意下さい。特に、WWW サーバソフトとして IIS が採用されている場合には、動作いたしません。Apache for Windows をご採用の場合には、ほとんどの CGI が動作しますが、保証の限りではございませんので、ご了承下さい。