CGI とは

CGI (Common Gateway Interface) とは、ウェブサーバでプログラムを実行するための仕組みです。

当サービスで CGI を介して使用できるプログラミング言語は、 Perl, Ruby, Python, PHP です。このページでは Perl, Ruby, Python についてご案内します。PHP についてはこちらをご覧ください。

CGI プログラムの設置場所と拡張子

CGI プログラムは、ディレクトリ public_html 下のどのディレクトリに設置しても動作します。また、拡張子が .cgi .pl .rb .py のいずれかのファイルが CGI プログラムとして扱われます。

インタプリタ

CGI プログラムのファイルの1行目でインタプリタを指定します。インタプリタとはプログラムのソースコードを実行するソフトウェアのことです。

Perlスクリプトならば1行目に #!/usr/local/bin/perl と記述します。

env を使用して次のように書くこともできます。

各言語のインタプリタのパスは次の通りです。プログラムファイルにあらかじめ記述されているパスがこれと異なる場合は修正してください。
Perl 5.24 /usr/local/bin/perl
/usr/bin/perl
(上記のいずれか)
Ruby 2.3 /usr/local/bin/ruby
Python 2.7 /usr/local/bin/python

古いバージョンのインタプリタ

新しい環境に対応していないCGIプログラムのために、古いバージョンのインタプリタを提供します。追加のモジュールやライブラリはインストールされておりません。
Perl 5.20 /usr/local/bin/perl5.20
Perl 5.16 /usr/local/bin/perl5.16
Ruby 1.8 /usr/local/bin/ruby18

CGIプログラムのパーミッション

パーミッションとは、ファイルやディレクトリに対するアクセス権のことです。誰に対して読み/書き/実行の権限を与えるかを設定するものです。CGI プログラムに関連するファイルの推奨パーミッションは次の通りです。

ファイルの種類 説明 推奨パーミッション
実行ファイル ウェブブラウザから直接アクセスされるファイル 700 (rwx --- ---)
データファイル CGI プログラムがデータを読み書きするファイル 600 (rw- --- ---)
ディレクトリ 実行ファイルやデータファイルが入っているディレクトリ 705 (rwx --- r-x)

suEXEC

当サービスのウェブサーバは suEXEC に対応しています。suEXEC とは、CGI プログラムを実行する際のセキュリティを高めるための機能です。この機能により、 CGI プログラムはユーザ権限で実行されます。また、ファイルに過剰なパーミッションが与えられていると動作しません。例えば、実行ファイルや実行ファイルが入っているディレクトリのパーミッションが 777 だと、Internal Server Error が発生します。

各種プログラムのパス

CGI プログラムから呼び出して使用できる主なプログラムのパスは次の通りです。
nkf /usr/local/bin/nkf
sendmail /usr/lib/sendmail
/usr/sbin/sendmail
(上記のいずれか)
convert /usr/local/bin/convert
gzip /usr/bin/gzip
uuencode /usr/bin/uuencode
uudecode /usr/bin/uudecode