目次
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
と記述します。
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "Hello, world!\n";
env
を使用して次のように書くこともできます。
#!/usr/bin/env perl
print "Content-type: text/html\n\n";
print "Hello, world!\n";
各言語のインタプリタのパスは次の通りです。プログラムファイルにあらかじめ記述されているパスがこれと異なる場合は修正してください。
Perl 5.32 |
|
---|---|
Ruby 2.6 | /usr/local/bin/ruby |
Python 3.8 | /usr/local/bin/python |
古いバージョンのインタプリタ
新しいバージョンに対応していないCGIプログラムのために、古いバージョンのインタプリタを提供します。古いバージョンのインタプリタを使用する場合、追加のモジュールやライブラリは利用できません。
Perl 5.16 | /usr/local/bin/perl5.16 |
---|---|
Ruby 1.8 | /usr/local/bin/ruby18 |
Python 2.7 | /usr/local/bin/python2.7 |
CGIプログラムのパーミッション
パーミッションとは、ファイルやディレクトリに対するアクセス権のことです。誰に対して読み/書き/実行の権限を与えるかを設定するものです。CGIプログラムに関連するファイルの推奨パーミッションは次の通りです。
ファイルの種類 | 説明 | 推奨パーミッション |
---|---|---|
実行ファイル | ウェブブラウザから直接アクセスされるファイル。 ファイルの所有者に読み/書き/実行権限を与えます。 | 700 (rwx — —) |
データファイル | CGIプログラムがデータを読み書きするファイル。 ファイルの所有者に読み/書き権限を与えます。 | 600 (rw- — —) |
ディレクトリ | 実行ファイルやデータファイルが入っているディレクトリ。 ディレクトリの所有者に読み/書き/実行権限を与え、他人に読み/実行権限を与えます。 | 705 (rwx — r-x) |
suEXEC
当サービスのウェブサーバは suEXEC に対応しています。suEXECとは、CGIプログラムを実行する際のセキュリティを高めるための機能です。この機能により、CGIプログラムはユーザ権限で実行されます。また、ファイルに過剰なパーミッションが与えられていると動作しません。例えば、実行ファイルや実行ファイルが入っているディレクトリのパーミッションが 777 だと、Internal Server Error
が発生します。
各種プログラムのパス
CGIプログラムから呼び出して使用できる主なプログラムのパスは次の通りです。
convert | /usr/local/bin/convert |
---|---|
gzip | /usr/bin/gzip |
nkf | /usr/local/bin/nkf |
sendmail |
|
uuencode | /usr/bin/uuencode |
uudecode | /usr/bin/uudecode |