CGI・SSI~CGI
CGIとは
アクセスカウンタや掲示板を設置する場合によく利用されます。HTMLに比べ若干設置方法は難しくなりますので、以下の情報をよくお読みいただいた上で設置を行ってください。
対応言語
CGIの作成にご利用いただける言語として弊社がサポートする言語はPerl・C・PHP3/PHP4・シェルスクリプトの4種類です。その他の言語についてはLinux上で動作するバイナリファイルを作成できる言語であれば基本的には使用可能と思われますが、動作保証はいたしかねます。
C言語を使用したCGIの場合は、あらかじめLinux用にコンパイルしたバイナリファイルをアップロードしてください。
各種プログラムのパス
サーバ上にインストールされている主なプログラムのパスです。CGIからこれらのプログラムを呼び出して利用できます。
perl | /usr/bin/perl または /usr/local/bin/perl |
---|---|
PHP3 | /usr/bin/php3 または /usr/local/bin/php3 |
PHP4 | /usr/bin/php4 または /usr/local/bin/php4 |
sh | /bin/sh |
sendmail | /usr/lib/sendmail |
uuencode | /usr/bin/uuencode |
uudecode | /usr/bin/uudecode |
nkf | /usr/local/bin/nkf |
Perlで記述したCGIスクリプトの1行目には #!/usr/bin/perl または #!/usr/local/bin/perl と記述してください。
Perlで使用できるモジュールの一覧は オンラインマニュアル - [CGI・SSI] CGI - Perlモジュール一覧 のページに紹介しています。
PHP3で記述したCGIスクリプトの1行目には、#!/usr/bin/php3 または #!/usr/local/bin/php3 と記述してください。
PHP4で記述したCGIスクリプトの1行目には、#!/usr/bin/php4 または #!/usr/local/bin/php4 と記述してください。
CGIファイルの転送
CGIをサーバに転送する時は、必ず管理者用アカウント(admin)を使用してFTP接続し、転送を行ってください。また、CGIの実行ファイルは /cgi-bin ディレクトリ内に転送しないと動作しません。/home ディレクトリなど、他のディレクトリ内にCGIの実行ファイルを置いても動作いたしませんので、実行ファイルは必ず /cgi-bin ディレクトリの中に置いてください。
ほとんどのFTPソフトには、バイナリモードとアスキーモード(テキストモード)という2種類の転送モードがあります。Perlやシェルスクリプトで記述されたテキストファイルのCGIを転送する場合は必ずアスキーモードで転送してください。バイナリモードで転送すると正常に動作しない場合があります。
逆に、C言語を使用して作成したバイナリファイルのCGIを転送する場合はバイナリモードで転送を行ってください。
なお、初期状態ではHTMLファイルや画像ファイルなどを /cgi-bin ディレクトリ内に設置しても そのファイルをブラウザから直接参照することはできません。/cgi-bin ディレクトリ内にHTMLファイルや画像ファイルを設置したい場合は、オンラインマニュアル - [ホームページ] .htaccess のページに記載されている「/cgi-binディレクトリへのHTML・画像ファイル等の設置」に記載されている内容に従って .htaccess ファイルを設置してください。
ディスク容量不足時のデータ消失
使用しているディスク容量がご契約容量を越えてしまい、容量が不足している時にCGIがデータファイルに書き込みを行うとデータファイルが破損して内容が消失してしまう場合があります。このため、アクセスカウンタや掲示板など、データファイルにデータを書き込むタイプのCGIのご利用になる場合は、必ず十分な空き容量を確保するようにしてください。
パーミッションの設定
サーバにファイルを転送したら、パーミッションの設定を行ってください。パーミッションの設定が正しく行われていないと、CGIが正常に動作しなくなったり、第三者からの不正なアクセスを受けてしまったりする可能性があります。
パーミッションの設定はパーミッション変更機能のあるFTPソフトを使用して行ってください。 TikiTikiホスティングサービスではTelnetがご利用いただけませんので、サーバにTelnetで接続してパーミッションの変更を行うことはできません。
通常、設定するパーミッションの値はCGIファイルのドキュメントなどに記載されていますが、 TikiTikiホスティングサービスのサーバでは所有者(owner)に読み取り権(r)と実行権(x)が設定されている必要があります。特に差し支えがなければCGIが置かれているフォルダのパーミッションは 705(rwx---r-x)、実行させるCGIファイルのパーミッションは 700(rwx------)、書込みを行うデータファイルのパーミッションは 600(rw-------) に設定していただくことをおすすめします。
【ご注意】
TikiTikiホスティングサービスのサーバではSuEXECというラッパープログラムが動作しており、CGIを置くディレクトリやCGIの実行ファイルのグループ(group)や第三者(other)に対して書込み権(w)が設定されているとエラーになってしまいます。CGIのマニュアルに 777(rwxrwxrwx) や 666(rw-rw-rw-) を設定するように説明があった場合でも、そのような値を設定すると正常に動作しませんので注意してください。
PHPの使用
PHPが使用できるサーバの多くはHTMLファイルの中に <? ?> などのタグを書き、その中にPHPスクリプトを記述しておくだけで動作するようになっていますが、TikiTikiホスティングサービスの場合、セキュリティ上の理由からこのような方法で動作させることはできません。
TikiTikiホスティングサービスのサーバでは、HTMLタグやPHPスクリプトを記述したファイルは/cgi-bin ディレクトリに設置し、CGIとして動作させてください。
また、サーバは複数のお客様で共用していただく形になっておりますので、セキュリティ上の問題が発生しないよう、PHPはセーフモードで動作しています。
PHPのバージョンはPHP3が3.0.18、PHP4が4.4.2です。
PHPを使用する具体的な手順は、以下のようになります。
-
HTMLタグやPHPスクリプトを記述したファイルをテキストエディタ等で作成します。
ここでは例として以下の内容を記述し、「phptest.cgi」というファイル名で保存します。
(#!/usr/local/bin/php4 が1行目となるように記述してください。先頭部分に余分な空行が入っていると正しく動作しません。)#!/usr/local/bin/php4
<HTML>
<HEAD>
<TITLE>PHP Test</TITLE>
</HEAD>
<BODY>
<?
phpinfo()
?>
</BODY>
</HTML>
- phptest.cgiをFTPソフトでサーバの /cgi-bin ディレクトリに転送し、パーミッションを 700(rwx------) に設定します。
- ブラウザで http://(ドメイン名またはIPアドレス)/cgi-bin/phptest.cgi にアクセスします。正しくPHPが動作すれば、PHPのバージョン情報などが表示されます。
記述するPHPスクリプトの内容を変えれば、同じ要領でお客様が作成したPHPスクリプトを動作させることができます。
sendmailの使用
CGIでメールを送信する処理を行う場合は、サーバに用意されているsendmailをご利用いただけます。sendmailが置かれているサーバ上のパスは、/usr/lib/sendmail です。CGIスクリプト内で記述するコマンドの書式は、以下の通りです。
/usr/lib/sendmail -t -f(発信元アドレス)
(発信元アドレス)にはメールの発信元として使用するメールアドレスを入力してください。 通常はお客様ご自身のメールアドレスを設定します。
例えば、お客様のメールアドレスが hina@tiki.ne.jp の場合は
/usr/lib/sendmail -t -f hina@tiki.ne.jp
と記述してください。
上記のアドレスは例として挙げたものです。設定したアドレスには配送エラーの通知などが届きますので、このアドレスはそのまま記述せず、必ずお客様ご自身のメールアドレスを記述して利用してください
なお、TikiTikiホスティングサービスではメールサーバプログラムにqmailを使用しておりますので、 実際にはsendmailはインストールされておらず、sendmailはqmailへのリンクとなっております。基本的にはsendmailと同様な方法でご利用いただくことが可能ですが、sendmailのオプションは上記のように「-t」と「-f(発信元アドレス)」のみをご使用ください
cronによる自動実行・常駐について
UNIX系のOSには指定した時間にプログラムを自動実行させるcronがありますが、TikiTikiホスティングサービスのサーバではご利用いただけません。また、サーバにプロセスを常駐させることもできませんので、継続的に動作し続けるデーモン等もご利用いただけません。