WAKWAKブロードバンド・プロバイダ

ホームページ制作ガイド

自作CGIの設置

自作CGIの設置についてご説明します。

ご利用の際の注意

  • 自作CGIをご利用になるには、Perlの知識が必要となります。
  • 自作CGIスクリプトの動作確認はお客様自身で行ってください。WAKWAKヘルプデスクでは自作CGIスクリプトに関する質問には一切お答えできません。
  • セキュリティホールのある自作CGIを設置した場合には、お客様のホームページを他人に消去されたり書きかえられたりする可能性があります。自作CGIの設置には十分ご注意ください。
  • 万一、お客様が設置されたCGIの不具合によるセキュリティ上の問題が発生しても、当社は一切責任を負えません。また、他のお客様に迷惑がかかったり、運用上必要な場合には、お客様にお断りすることなくホームページの公開を停止させていただくことがございますのでご了承ください。
  • バックアップは必ずお客様のパソコンに保存しておいてください。万一、ホームページが破損しても、当社では理由の如何に関わらず一切責任を負えません。

自作CGIの設置について

自作CGIで使用できる言語は?

WAKWAKの自作CGIで呼び出すことのできる外部プログラムは Perl および sendmail のみです。それ以外の外部プログラムはご利用いただけませんのでご注意ください。SSI もご利用いただけません。

Perlのバージョンは?

現在のバージョンは Perl 5.20.3 です。なお、今後予告なくバージョンアップすることがあります。

CGIスクリプトの実行環境は?

CGIスクリプトは、ホームページ所有者のユーザID、グループIDに suid、sgid されて実行されます。

Telnetは利用できますか?

ご利用いただけません。

WAKWAK以外で配布されているCGIを利用する場合は?

相対パスおよび絶対パスの表記が使用可能です。パーミッションは 777 でも動作しますが、セキュリティの観点から 755 と設定されることをお勧めします

同時に実行できるCGIの数は?

WAKWAKでは、お客様ごとに同時に実行できるCGIの数を5つに制限しております。今後、予告なく変更となる場合があります。
なお、お客様のCGIスクリプトにアクセスが集中した場合は「CGI Busy」というメッセージが表示されます。メッセージが表示された場合は、しばらく時間をおいてから再度アクセスしてください。

CGIスクリプトを書く上での注意点

自作CGIの呼び出し方法は?

自作CGIは /cgi-bin の直下に置きます。例えば、/cgi-bin/test.cgi を置いた場合、それを呼び出すためのURLは以下のようになります。

会員ホームページをご利用の場合

http://parkxx.wakwak.com/~yyyy/cgi-bin/test.cgi
xx、yyyy にはお客様のホームページサーバ名やFTPログインIDが入ります。

独自ドメインホームページをご利用の場合

http://www.○○○.jp/cgi-bin/test.cgi
○○○.jp にはお客様が取得した独自ドメイン名が入ります。

Perlのパスは?

Perlのパスは /usr/local/bin/perl です (/usr/bin/perl、/bin/perl も利用可能)。スクリプト先頭行には #!/usr/local/bin/perl と記述してください。

CGIスクリプト中のパス表記は?

例えば、CGIスクリプト本体から同じディレクトリにある jcode.pl を呼び出す場合のパス表記は以下のとおりです。
require './jcode.pl'; # 相対パス表記
または
require '/cgi-bin/jcode.pl'; # 絶対パス表記

  • CGIスクリプトのパーミッションは 755 (-rwxr-xr-x) に設定してください。777 (-rwxrwxrwx) でも動作しますが、セキュリティの観点から 755 に設定されることをお勧めします。

Perlのライブラリは?

Perlのライブラリは、Perl 5.20.3 標準添付のライブラリをご利用いただけます。ただし、お客様ご自身でライブラリをアップロードすれば独自のライブラリもご利用可能です。その場合もCGIスクリプト中のパスの指定にはご注意ください。
例えば、myperllib.pm というライブラリを入れるには、/cgi-bin/myperllib.pm にアップロード後にCGIスクリプト中に以下のように記述してください。
require '/cgi-bin/myperllib.pm';
または
BEGIN {unshift(@INC,'/cgi-bin/');}
use myperllib;

  • 上記「CGIスクリプト中のパス表記」と同様に相対パス表記で記述することも可能です。
  • use Socket; 自体は動作しますが、Socket で通信を許しているのは localhost への smtp/tcp のみとなります。
  • /cgi-bin/myperllib.pm のパーミッションは 666 (-rw-rw-rw-) でも動作しますが、644 (-rw-r--r--) に設定される事をお勧めします。

CGIスクリプト中のパスの記述方法にご注意ください

例えば、CGIスクリプト本体および jcode.pl が /cgi-bin の直下にあり、CGIスクリプト本体から jcode.pl を参照したい場合は以下のように記述してください。
require './jcode.pl';
同様に /public_html/aaa.html というHTMLファイルをCGIスクリプト本体から参照する場合も、$aaa = '/public_html/aaa.html'; など相対パス、絶対パスのいずれかの表記での記述が必要となります。
詳しくはこのページの [CGIのパスについて] をご確認ください。

  • アップロード先の /public_html および /cgi-bin の ディレクトリアクセス権は変更しないでください。ディレクトリのパーミッションは 755 (-rwxr-xr-x) です。

CGIのパスについて

自作CGIのパスの書き方は?

CGIファイルをアップロードしたのにCGIが正常に動作しない場合や、CGIファイル中のパスの表記方法がわからないという場合は、以下の表をご参考にHTML、CGIファイル中のパスの書き方をご確認ください。

HTMLファイルからWAKWAKアクセスカウンタおよび自作CGIを呼び出す場合と、自作CGIファイルからWAKWAKアクセスカウンタおよび自作CGIを呼び出す場合とでは、パスの表記方法に次のような違いがあります。

会員ホームページをご利用のお客様
HTML
WAKWAKアクセスカウンタを呼び出す場合:
http://parkxx.wakwak.com/cgi-bin/Count.cgi または /cgi-bin/Count.cgi
自作CGIを呼び出す場合:
http://parkxx.wakwak.com/~yyyy/cgi-bin/test.cgi または /~yyyy/cgi-bin/test.cgi
CGI
WAKWAKアクセスカウンタを呼び出す場合:
http://parkxx.wakwak.com/cgi-bin/Count.cgi
自作CGIを呼び出す場合:
http://parkxx.wakwak.com/~yyyy/cgi-bin/test.cgi または /~yyyy/cgi-bin/test.cgi
  • xx、yyyy にはお客様のホームページサーバ名やFTPログインIDが入ります。
独自ドメインホームページをご利用のお客様
HTML
WAKWAKアクセスカウンタを呼び出す場合:
http://www.独自ドメイン名/cgi-bin/Count.cgi または /cgi-bin/Count.cgi
自作CGIを呼び出す場合:
http://www.独自ドメイン名/cgi-bin/test.cgi または /cgi-bin/test.cgi
CGI
WAKWAKアクセスカウンタを呼び出す場合:
http://www.独自ドメイン名/cgi-bin/Count.cgi
自作CGIを呼び出す場合:
http://www.独自ドメイン名/cgi-bin/test.cgi または /cgi-bin/test.cgi

上記のように記述することにより、HTMLおよびCGIファイルから、指定したCGIファイルを呼び出すことができます。もしお客様の作成されたCGIが正常に動作しない場合は、http://parkxx.wakwak.com/~yyyy/cgi-bin/test.cgi のように絶対パスでファイルを指定してみるなどいくつかの記述をお試しください。

自作CGIから画像ファイル (JPG、GIF) を呼び出すには?

JPG、GIFなどの画像ファイルは、必ず /public_html 配下にアップロードしてください。 /cgi-bin の下にアップロードしても画像を表示させることはできません。
CGIスクリプトファイルからJPG、GIFなどの画像ファイルを呼び出す際は、CGIスクリプトファイルに次のように記述してください (CGIスクリプトから /public_html/images/ttt.jpg を呼び出す場合の例)。

会員ホームページご利用のお客様

/~yyyy/images/ttt.jpg
または
http://parkxx.wakwak.com/~yyyy/images/ttt.jpg

独自ドメインホームページご利用のお客様

/images/ttt.jpg
または
http://www.独自ドメイン/images/ttt.jpg
このページの [自作CGIのパスの書き方は?] に記述してあるHTMLファイルおよびCGIファイルからCGIを呼び出す際のパス表記と、自作CGIから画像ファイルを呼び出す際のパス表記は記述の方法が異なりますのでご注意ください。

CGIのパーミッションについて

ファイルをアップロードする際は、セキュリティの観点からアップロードされるディレクトリやファイルに以下のパーミッション (アクセス権限) を適用されることをお勧めします。

  • ディレクトリ: 755(-rwxr-xr-x)
  • HTMLファイル: 644(-rw-r--r--)
  • CGIファイル: 755(-rwxr-xr-x)
  • *.pl などのPerlのライブラリ: 644(-rw-r--r--)

お客様がご使用のFTPソフトによっては、アップロードした際にディレクトリやファイルのパーミッションを自動で書き換えてしまう場合があります。もし、アップロードしたのにCGIが正常に動作しない、または画面に表示されないなどといった場合は、ご使用のFTPソフトの設定およびお客様ホームディレクトリにある /public_html や /cgi-bin などのディレクトリのパーミッションもご確認ください。

CGIで電子メールを送信するには

CGIスクリプト中に sendmail のパスとして /usr/lib/sendmail (/usr/sbin/sendmail、/lib/sendmail も利用可能) を記述することにより、CGIで sendmail を呼び出すことができます。
例えば、以下のように /usr/lib/sendmail を明示的に指定することにより、CGIから電子メールを送信することが可能となります。
$sendmail ='/usr/lib/sendmail';
open(MAIL,"| $sendmail -t ");
なお、WAKWAKの sendmail は送信前に Fromアドレスの書式チェックを行っています。Fromアドレスの書式が正しくなかったり、電子メールアドレスとして使用できない文字 (「 」など) を含んでいる場合は電子メールは送信されません。 sendmail を使用して電子メールが送信されない場合は、Fromアドレスが正しいものかどうかも合わせてご確認ください。

アップロードする際の注意

CGIプログラムは以下のいずれかの方法でアップロードしてください。

  • アスキーモードで転送する
  • CGIプログラム作成時にあらかじめ改行コードを LF のみに設定する

バイナリモードでCGIプログラムをアップロードすると、改行に ^M が付いてしまいます。CGIプログラム先頭行の #!/usr/local/bin/perl も #!/usr/local/bin/perl^M となってしまい、/usr/local/bin/perl^M という存在しないプログラムを起動しようとしてエラーとなります。
FTPで正しくアスキーモードで転送されていればこの問題は起きませんが、お客様のご使用のFTPソフトによっては初期設定でファイルをバイナリモードで転送してしまうものもあります。ご使用のFTPソフトの設定をアップロードされる前にご確認ください。
なお、CGIスクリプトだけでなく、HTMLなどのテキストファイルもアスキーモードで転送されることをお勧めいたします。ただし、PNG、JPEG、GIF などの画像ファイルはアスキーモードで転送されるとファイルが壊れ正しく表示されませんので、バイナリモードで転送してください。
また、上記のように ^M の改行コードが付いてしまう問題は、スクリプト先頭行 #!/usr/local/bin/perl の後ろに - を付けていただくことによって回避できる場合もあります。CGIプログラムが正常に動作しない場合は、#!/usr/local/bin/perl -- と記述して、CGIが正常に動作するかご確認ください。

自作CGIの動作確認

[WAKWAKユーティリティ (ホームページ用)] の各メニューより、お客様の作成された自作CGIの動作確認やデバグ設定、プロセスの強制終了が行えます。詳しくは [自作CGIの動作確認] をご確認ください。

もう一度ご確認ください

「CGIファイルをアップロードしたのに正常に表示されない」「HTMLファイルからCGIファイルが呼び出せない」などといった場合は、もう一度以下の点についてご確認ください。

  • CGIプログラムはcgi-binの下に置きましたか?
    → cgi-bin ディレクトリ直下に転送してください。
  • Perlのパスは正しく設定していますか?
    → 一行目は #!/usr/local/bin/perl にしてください。
  • アスキーモードでアップロードしましたか?
    → CGIプログラムはアスキーモードでアップロードしてください。詳しくは [アップロードする際の注意] をご確認ください。
  • パーミッションを正しく指定していますか?
    → アップロードしたファイルのパーミッションをご確認ください。詳しくは [CGIのパーミッションについて] をご確認ください。
表示価格は、特に記載のある場合を除きすべて税抜です。
T O P