ホームページサービス サポートセンター
ホームページへ 自作CGIの設置について ホームページサービス
自作CGIの設置について
自作CGI設置の際のご注意

自作CGI をご利用になるには perl の知識が必要となります。

自作CGI スクリプトの動作確認はお客様 自身で行ってください。
インターネットマンションヘルプデスクでは自作CGI スクリプトに関する 質問には一切お答えできません。

セキュリティホールのある自作のCGI を設置した場合には、 お客様のホームページを他人に消去されたり書きかえられたりする可能性があります。
自作CGI の設置には、十分ご注意下さい。

万一、お客様が設置されたCGI の不具合による セキュリティ上の問題が発生しても弊社は一切責任を負えません。 また、他のお客様に迷惑がかかったり、運用上必要な場合には、お客様にお断りすることなくページ を削除させていただくことがございますのでご了承ください。

バックアップは必ずお客様のパソコンに保存しておい てください。万一、ホームページが破損しても、弊社では理由の如何に関わらず一切責任を負えません。

自作CGIの設置に関して

  • WebServerのOS,ソフトウェアは?
    WAKWAKのカスタムCGIにて呼び出すことのできる外部プログラムはperl及びsendmailのみです。それ以外の外部プログラムはご利用になれませんのでご注意ください。 SSIに関しても申し訳ございませんがご利用いただけません。

  • カスタム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スクリプトを書く上での注意点

  1. 自作CGI の呼び出し方法は?
    自作CGI は/cgi-binの下に置きます。例えば/cgi-bin/test.cgiを置いた場合、 それを呼び出すためのURLは

    http://enjoy1.bb-east.ne.jp/~yyyy/cgi-bin/test.cgi

    になります。 (yyyy にはFTPログインIDが入ります。)

  2. perlのパスは?
    perlのパスは/usr/local/bin/perl([/usr/bin/perl] [/bin/perl]も利用可能です。 )です。スクリプト先頭行には #!/usr/local/bin/perlと記述して下さい。

  3. CGI スクリプト中のパス表記は?
    CGI スクリプト中のパス表記はCGIスクリプト 本体が同じディレクトリにある時は、CGIスクリプト本体からjcode.plを呼び出すのに
    ---------------------
    require './jcode.pl'; # 相対パス表記
    ---------------------
    と記述する事が可能です。
    または、
    ---------------------
    require '/cgi-bin/jcode.pl'; # 絶対パス表記
    ---------------------
    と記述することもできます。
    なおCGI スクリプトのパーミッションは755(-rwxr-xr-x) に設定して下さい。777(-rwxrwxrwx) でも動作しますが、セキュリティの観点から755 に設定される事をお勧めします。

  4. perlのライブラリは?
    perlのライブラリをご利用になる場合は perl 5.20.3 標準添付の ライブラリはご利用いただけます。 ただし会員様ご自身でライブラリをuploadすれば独自のライブラリもご利用可能です。その際にもスクリプト中のパスの指定にはご注意下さい。
    例えばmyperllib.pmというライブラリを入れるには/cgi-bin/myperllib.pm にupload後、CGI スクリプト中に
    ---------------------
    require '/cgi-bin/myperllib.pm';
    ---------------------
    もしくは
    ---------------------
    BEGIN {unshift(@INC,'/cgi-bin/');} use myperllib;
    ---------------------
    というように記述して下さい。
    また3と同様に相対パス 表記で記述する事も可能です。 use Socket; 自体は動作しますが、Socketで通信を許しているのはlocalhostへのsmtp/tcpのみとなります。 /cgi-bin/myperllib.pm のパーミッションは666(-rw-rw-rw-)でも動作しますが、644(-rw-r--r--) に設定される事をお勧めします。
) CGI スクリプト中のパスの記述法にご注意下さい。
( 詳しくはCGI のパスに関してをご覧ください。)
  • 例えば CGIスクリプト本体及び jcode.plが/cgi-binの直下にあり、CGIスクリプト本体からjcode.pl を参照したい場合は
    require './jcode.pl';
    などと記述してください。

  • 同様に/public_html/aaa.html という HTMLファイルをCGIスクリプト本体から参照する場合も
    $aaa = '/public_html/aaa.html';
    など相対パス、絶対パスいずれかの表記での 記述が必要となります。
■アップロード先の /public_html 及び /cgi-bin のディレクトリアクセス権は変更しないでください。 ディレクトリのパーミッションは755(-rwxr-xr-x)です。
ホームページサービスのディレクトリについて

ホームページサービスでお客様がご利用になられる ホームディレクトリは次のような構成になっております。 FTPでお客様のホームディレクトリにログイン されますと6つのディレクトリが見えると思います。

それぞれのディレクトリの役割は以下のと通りです。
  1. /public_html
    → お客様のホームページを置いてください。またTopPageのindex.html及び index.htmは必ず/public_html直下に置いてください。それ以外の場所に置かれますとお客様のホームページが正常に表示されません。
    また、jpgやgifなどのimageファイルもこの/public_htmlディレクトリの下にアップロードしてください。

  2. /cgi-bin
    → お客様の作成された自作CGI及びライブラリなどは必ずこのディレクトリ直下に置いてください。それ以外の場所に置かれますとお客様の作成されたCGIが正常に動作しない場合があります。
    また、cgi以外のhtmlファイルやjpg、gifなどのimageファイルなどは/cgi-binディレクトリの下に置かれても正常に表示されませんので、ご注意ください。

  3. /bin、/dev、/lib、/etc
    → システム利用領域です。お客様はご利用になれません。
CGIのパスについて

  1. 自作CGI のパスの書き方は?
    CGI ファイルをアップロード したのにCGI が正常に動作しないお客様やCGI ファイル中のパスの表記の仕方が 分からないというお客様は、下の表をご参考にHTML,CGI ファイル中のパスの書き方をご確認ください

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

    HTMLファイル上での記入方法

    WAKWAKアクセスカウンターCGIを呼び出す際のパス設定
     http://enjoy1.bb-east.ne.jp/cgi-bin/Count.cgi
      もしくは /cgi-bin/Count.cgi

    自作CGIを呼び出す際のパス設定
     http://enjoy1.bb-east.ne.jp/~yyyy/cgi-bin/test.cgi
      もしくは /~yyyy/cgi-bin/test.cgi

    CGIファイル上での記入方法 WAKWAKアクセスカウンターCGIを呼び出す際のパス設定
      http://enjoy1.bb-east.ne.jp/cgi-bin/Count.cgi
    自作CGIを呼び出す際のパス設定
      http://enjoy1.bb-east.ne.jp/~yyyy/cgi-bin/test.cgi
      もしくは /~yyyy/cgi-bin/test.cgi

    上記の記述をファイルに記入する事により指定した HTML,CGIファイルを呼び出す事ができます。 もし、お客様の作成されたCGIが正常に動作しない場合は
    http://enjoy1.bb-east.ne.jp/~yyyy/cgi-bin/test.cgi のようにフルパスでファイルを指定してみるなどいくつかの記述を試して見てください。

    注)yyyyにはお客様のFTPログインIDが入ります。

  2. 自作CGI から画像ファイル( jpg,gifファイル )を呼び出すには?
    CGI のファイルからjpgや gifなどのimageファイルを呼び出すには、以下の方法で表示させることができます。

    jpg、gifなどのimageファイルは、必ず /public_html以下にアップロードしてください。 /cgi-binの下にアップロードしても画像を表示させることはできません。

    CGI スクリプトファイルからjpg,gif などのimageファイルを呼び出す際は次のように記述してください。 CGI スクリプトから/public_html/images/ttt.jpgを呼び出す際は、CGI スクリプトファイル に次のようにファイルをご指定ください。
    ---------------------
    /~yyyy/images/ttt.jpg
    ---------------------
    もしくは
    ---------------------
    http://enjoy1.bb-east.ne.jp/~yyyy/images/ttt.jpg
    ---------------------
    とフルパスでご記述ください。
    注)yyyyにはお客様のFTPログインIDが入ります。

    1. に記述してあるhtml及びCGIから CGI を呼び出す際のパスの表記と2.に 記載されたCGIからimageファイルを 呼び出す際のパスの表記は記述の方法が異なりますのでご注意ください。
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 でメールを出す際の注意
CGI スクリプト中にsendmailのパスとして /usr/lib/sendmail([/usr/sbin/sendmail] [/lib/sendmail]も利用可能です。 )を記述して頂く事によりCGI でsendmailを呼び出すことが可能です。
例えば
---------------------
$sendmail =/usr/lib/sendmail

open(MAIL,"| $sendmail -t");
---------------------
など/usr/lib/sendmailを明示的に指定して頂くことによりCGI からメールを出すことが可能となります。
なお、wakwak の sendmail は送信前に Fromアドレスの書式チェックを行っています。 From アドレスの書式が正しくなかったり、メールアドレスとして使えない文字 (例えば \ など) を含んでいた場合、メールは送信されません。 sendmail を使用してメールが発信されない場合、From アドレスが正しいものかどうかも合わせて確認してください。
アップロードする際の注意

CGI プログラムをアップロードされる際は、 以下の点についてご注意ください。

(1)ascii modeで転送する
(2)CGIプログラム作成時に予め改行コードを LF のみに設定する

のいずれかの方法で CGI プログラム をアップロードしてください。
binary mode で CGI プログラムを アップロードされますと改行に ^M が付いてしまいます。 CGI プログラム先頭行の
---------------------
#!/usr/local/bin/perl
---------------------
も、
---------------------
#!/usr/local/bin/perl^M
---------------------
となってしまい、/usr/local/bin/perl^M という存在しないプログラムを起動しようとしてしまい エラーとなってしまいます。
ftp で正しく ascii mode で転送されていればこの問題は起きませんが、 お客様のご利用になられている ftp ソフトによっては初期設定でファイルを binary modeで転送してしまうものもございますので、 アップロードされる前にご利用になられているftp ソフトの設定を一度ご確認されてから アップロードしてください。

CGI スクリプトだけでなくHTML等のテキストファイルはascii mode で転送されることをお勧め致します。
ただし、PNG, JPEG, GIF 等の画像データは ascii mode で転送されると ファイルが壊れ、正しく表示されませんので binary mode で転送されることにご注意ください。

また、上記のような^Mの改行コードが付いてしまう 問題はスクリプト先頭行 #!/usr/local/bin/perl の後ろに 「- 」を付けていただくことによって回避できる場合もございますので CGI プログラムが正常に動作しないといったお客様は一度
---------------------
#!/usr/local/bin/perl
---------------------
の先頭行を
---------------------
#!/usr/local/bin/perl --
---------------------
と記述して頂いて CGI が正常に動作するかご確認ください。
自作CGIの動作確認

以下の方法でCGIの動作確認とCGIプロセスの強制終了を行なえます

下記のページをご利用になられることで,お客様の作成された自作CGIの動作確認および自作CGIプロセスの強制終了を行なうことが可能です。詳しくは自作CGIの動作確認をご覧下さい。

(1)自作CGIの構文チェックのページ

お客様ホームディレクトリの/cgi-bin配下に置かれている自作CGI及びライブラリの構文チェックを行なうには自作CGIの構文チェックのページをご利用下さい。
空欄にお客様のアップロードされた自作CGI ( xxxxx.cgi) 、ライブラリ ( xxxxx.pl ) の .cgi .pl より左の部分を入力し、空欄の右にあるタブで [.cgi] か [.pl]を選択し [ 確認 ] ボタンをクリックして頂くと自作CGIの構文チェックが行えます。

(2)自作CGIのデバグ設定の登録・解除のページ

お客様の作成された自作CGIをデバグモードで実行するには自作CGIのデバグ設定の登録・解除のページをご利用下さい。
変更後のデバグ状態を選択し、実行ボタンをクリックして頂くとCGI のデバグモードへと移行します。
注)デバグが済んだら必ず [デバグ解除] を行ってください。デバグ中のままだと、 全ての自作CGIが動作しません。

(3)自作CGIプロセス強制終了のページ

お客様の作成された自作CGIを強制終了するには自作CGIプロセス強制終了のページをご利用下さい。 お客様側で、CGI プロセスの動作を強制的に終了させることが可能です。
もう一度ご確認下さい

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

    1. CGI プログラムはcgi-binの下に置きましたか?
    cgi-binのディレクトリ直下に転送してください。
    2. perl のパスは正しく設定していますか?
     → 一行目は#!/usr/local/bin/perl にしてください。
    3. ascii mode でアップロードしましたか?
     → CGI プログラムはascii mode でアップロードしてください。
    詳しい説明はこちら・・・アップロードする際の注意
    4. パーミッションを正しく指定していますか?
     → お客様のアップロードされたファイルのパーミッションをご確認ください。
    詳しい説明はこちら・・・CGI のPermissionに関して
ページトップへ