- このページの位置情報
-
- HOME >
- サポート >
- ONLINE MANUAL >
- +disk >
- CGIプログラムの登録について
CGIプログラムの登録について
サポートについて本サービスではお客様ご自身でプログラム登録を自由に行なっていただくことができますが、登録されたプログラムが動かないなどの不具合につきましては一切対応できませんので予めご了承下さいますようお願い申し上げます。
うまく動かない場合にはエラーログファイルなどを参照して問題を解決して下さい。
対応言語
CGIの作成にご利用頂ける言語はperl・PHP3/PHP4・Cおよびシェルスクリプトの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と記述して下さい。
PHP3で記述したCGIスクリプトの1行目には、 #!/usr/bin/php3または#!/usr/local/bin/php3と記述して下さい。
PHP4で記述したCGIスクリプトの1行目には、 #!/usr/bin/php4または#!/usr/local/bin/php4と記述して下さい。
CGIファイルの転送
CGIの実行ファイルは/cgi-binディレクトリ内に転送しないと動作しない様になっています。 /homeディレクトリなど、他のディレクトリ内にCGIの実行ファイルを置いて動作させる事は出来ませんので、 実行ファイルは必ず/cgi-binディレクトリの中に置いて下さい。
ほとんどのFTPソフトには、バイナリモードとアスキーモード(テキストモード)という2種類の転送モードがあります。 Perlやシェルスクリプトで記述されたCGIのファイル(テキストファイル)を転送する場合は必ずアスキーモードで転送して下さい。 バイナリモードで転送すると正常に動作しない場合がございます。
C言語を使用して作成したバイナリ形式のCGIファイルを転送する場合はバイナリモードで転送を行って下さい。
なお、初期状態ではHTMLファイルや画像ファイルなどを/cgi-binディレクトリ内に設置しても そのファイルをブラウザから直接参照する事は出来ません。 /cgi-binディレクトリ内にHTMLファイルや画像ファイルを設置して使用したい場合は、.htaccessのページに記載されている 「/cgi-binディレクトリへのHTML・画像ファイル等の設置」に記載されている内容に従って.htaccessファイルを設置すると HTMLファイルや画像ファイルを置く事も出来る様になります。
ディスク容量不足時のデータ消失
使用しているディスク容量がご契約容量を越えてしまい、容量が不足している時にCGIがデータファイルに書き込みを行うと データファイルが破損して内容が消失してしまう場合がございます。 このため、アクセスカウンターや掲示板の様なデータファイルにデータを書き込むタイプのCGIのご利用になる場合は、 必ず十分な空き容量を確保する様にして下さい。
パーミッションの設定
サーバーにファイルを転送したら、パーミッションの設定を行って下さい。 パーミッションの設定が正しく行われていないと、CGIが正常に動作しなくなったり 第三者からの不正なアクセスを受けてしまったりする可能性があります。
パーミッションの設定はパーミッション変更機能のあるFTPソフトを使用して行って下さい。 当該サーバではTelnetがご利用頂けませんので、サーバーにTelnetで接続してパーミッションの変更を行う事は出来ません。
通常、設定するパーミッションの値はCGIファイルのドキュメントなどに記載されておりますが、当該サーバーでは所有者(owner)に読み取り権(r)と実行権(x)が設定されている必要がございます。 特に差し支えがなければCGIが置かれているフォルダのパーミッションは705(rwx---r-x)、 実行させるCGIファイルのパーミッションは700(rwx------)、 書き込みを行うデータファイルのパーミッションは600(rw-------)に設定して頂く事をお勧め致します。
=ご注意=
当該サーバーではSuEXECというラッパープログラムが動作しており、CGIを置くディレクトリやCGIの実行ファイルの グループ(group)や第三者(other)に対して書き込み権(w)が設定されているとエラーになってしまいます。 CGIのマニュアルに777(rwxrwxrwx)や666(rw-rw-rw-)を設定する様に 説明があった場合でも、その様な値を設定すると正常に動作しませんのでご注意下さい。
PHPの使用
PHPが使用できるサーバーの多くはHTMLファイルの中に <? ?> などのタグを書き、 その中にPHPスクリプトを記述しておくだけで動作する様になっていますが、 本サービスの場合、セキュリティ上の理由からこのような方法で動作させることは出来ません。
HTMLタグやPHPスクリプトを記述したファイルを /cgi-bin ディレクトリに設置し、 CGIとして動作させることによりPHPをご利用頂くことが出来ます。
さらにDBオプションサービスと連携して動作させるためのPostgreSQL対応モジュールがインストールされています。 (DBオプションサービスにご契約頂かなくても、PHP自体は使用できます。)
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のバージョン情報などが表示されます。
なお、ご契約頂いたお客様は上記の「phpinfo()」関数を実行するPHPスクリプトを設置して頂くことにより PHPのバージョン情報や設定状態をご覧頂くことが出来ます。
sendmailの使用
CGIでメールを送信する処理を行う場合は、サーバーに用意されているsendmailをご利用頂く事が出来ます。 sendmailが置かれているサーバー上のパスは、 /usr/lib/sendmail です。 CGIスクリプト内で記述するコマンドの書式は、以下の様になります。
/usr/lib/sendmail -t -f(発信元アドレス)(発信元アドレス)にはメールの発信元として使用するメールアドレスを入力して下さい。 通常はお客様ご自身のメールアドレスを設定します。
例えば、お客様のメールアドレスが username@inet.or.jpの場合は
/usr/lib/sendmail -t -fusername@inet.or.jpと記述して下さい。
-
上記のアドレスは例として挙げたものです。 設定したアドレスには配送エラーの通知などが届きますので、 このアドレスはそのまま記述せず、必ずお客様ご自身のメールアドレスを記述してご利用下さい。
cronによる自動実行・常駐について
UNIX系のOSには指定した時間にプログラムを自動実行させるcronがございますが、当該サーバーではcronはご利用頂けません。 また、サーバーにプロセスを常駐させる事は出来ませんので、継続的に動作し続けるデーモン等もご利用頂く事は出来ません。
DBMの使用
当該サーバーではGDBM_File・DB_File・ SDBM_File・NDBM_Fileの4つのDBMライブラリがご利用頂けます。 Perlを使用したCGIでDBMをご使用になる場合は、これらのうちいずれかをご利用下さい。