| お問い合わせ | 資料請求 | サイトマップ |
OCN for business OCNホスティングサービス
サイト内検索
ホーム > ユーザサポート > メール&ウェブ(エントリー、スタンダード、アドバンス) >
オンラインマニュアル >
ユーザサポート メール&ウェブシリーズ
BACK
お客さまが作成されたCGIのご利用方法
 
「メール&ウェブ スタンダード、アドバンス」のプランでご利用いただけます。
お客さまがPerl, SH, KSH, CSHで作成されたCGIスクリプトをサーバ上で動作させることができます。

CGIスクリプトの設置方法
Perlスクリプト

1. 作成されたスクリプトの最初の行が、以下のように書かれていることを確認してください。

2. Perlスクリプト内にa.またはb.の記述があることを確認してください。どちらも記述されていない場合、スクリプトが動作せず、Internal Server Errorメッセージが表示されることがあります。

a. print “Content-type: text/html\n\n”
b. use CGI qw(;cgi-lib :standard);
print header(-type=>’text/html; charset=EUC-JP’);

また、b.のように“CGI.pm”を参照する記述が含まれている場合、文字化けが発生することがあります。文字化けが発生した場合は、お客さまの環境に合わせて、charsetを指定することで文字化けを回避することができます。
charsetは、お客さまの環境に合わせて「Shit_JIS」や「UTF-8」などに変更してください。

3. このPerlスクリプトを、お客さまの"cgi-local"ディレクトリにFTPのASCII転送モードでアップロードしてください。“cgi-local”にアップロードされたスクリプトのパーミッションは自動設定されます。
4. Perlスクリプトが参照するファイルのうち設定ファイルや顧客データファイル等、他者から閲覧されたくないファイルの設置方法についてはこちらをご覧ください。
5. お客さま“コントロールパネル”にログインし、スクリプトの文法をチェックすることができます。
6. ブラウザでPerlスクリプトへのパス“http://www.your_domain.co.jp/cgi-local/ファイル名”を直接入力するか、HTMLファイルからのリンクにより起動してください。

シェルスクリプト

1. 作成されたスクリプトの最初の行が、以下のように書かれていることを確認してください。(使用するシェルスクリプトの種類により異なります。)

2. スクリプト内に必ず以下の文が記述されていることを確認してください。(記述されていない場合、Internal Server Errorメッセージが表示されることがあります。)
echo 'Content-type: text/html'
echo ''
3. スクリプトを、お客さまの"cgi-local"ディレクトリにFTPのASCII転送モードでア ップロードしてください。 ファイルアップロード時のデフォルトのパーミッション設定値は644となりますので、 必要に応じて変更ください。
4. ブラウザでCGIスクリプトへのパス"http://www.your_domain.co.jp/cgi-local/ファイル名"を直接入力するか、HTMLファイルからのリンクにより起動してください。

その他のプログラムを利用する際のパスは以下のように設定してください。
sendmail /usr/lib/sendmail
UUEncode /usr/bsd/uuencode
nkf

また、インストールされているPerlモジュールの種類についてはこちらをご覧ください。
(参考)/usr/lib/sendmailを用いて送信したメールのDateフィールド時刻を9時間遅れにしない対処方法
/usr/lib/sendmailを用いてメールを送信した場合、qmailの仕様でDateフィールドの値がUTC(協定世界時、日本標準時から-9時間遅れ)になります。
これを回避するには、CGI側でメールヘッダをつくり、Dateフィールドに日本標準時の値を明示的に設定してメールを送信する必要があります。
以下は、メール送信CGIのサンプルになります。

#!/usr/bin/perl

use strict;
use warnings;
use CGI qw(:cgi-lib :standard);

print header(-type=>'text/html; charset=EUC-JP');
# charsetはお客さまの環境に合わせてShift_JISやUTF-8などに変更してください。

my $MAIL_FROM = 'test_from@example.com'; #お客さまの環境に合わせて変更ください
my $MAIL_TO = 'test_to@example.com'; #お客さまの環境に合わせて変更ください
my $MAIL_SUBJECT = 'test mail'; #お客さまの環境に合わせて変更ください

open MAIL, "| /usr/lib/sendmail -i -t -f$MAIL_FROM" or die "failed to open sendmail:$!";
print MAIL &mail_header;
close MAIL;

print '<html><body>success</body></html>';

# Dateフィールドの時刻表記を作るサブルーチン
sub date_rfc2822 {
my @month = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
my($sec, $min, $hour, $mday, $mon, $year, $wday, $wday, $isdst) = localtime(time);
return sprintf('%02d %s %04d %02d:%02d:%02d +0900', $mday, $month[$mon], $year+1900, $hour, $min, $sec);
}

# メールヘッダを生成するサブルーチン
sub mail_header {
my $dt = &date_rfc2822;
my $HEAD = <<EOD;
From: $MAIL_FROM
To: $MAIL_TO
Subject: $MAIL_SUBJECT
Date: $dt
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
EOD

return $HEAD."\n";
}

# メール本文を生成するサブルーチン
sub mail_content {
return <<EOD;
This is test mail. #お客さまの環境に合わせて変更ください
EOD
}



本サービスでは、サーバ上でのCGIスクリプト動作環境のみを提供いたします。お客さまが作成されたCGIスクリプトの内容につきましては、サポートできませんのであらかじめご了承ください。
"cgi-local"ディレクトリに設置できるのは、「.pl」「.cgi」「.cfg」「.dat」「.txt」のみです。これら以外のファイルを設置しても、正常に動作しない場合があります。
本サービスで提供しているperl, sh, csh, ksh では、漢字コードを意識した特殊な処理は組み込まれておらず、SJISコードの文字列操作において文字化けが発生することがあります。これを回避するため、内部コードとしてEUCコードを用いる形でプログラミングされることをお勧めします。
本サービスで提供しているperlはjperlではないため、漢字コードの2バイト区切りを意識した文字列処理はできません。
▲ページトップ
BACK

| 著作権について | プライバシーポリシー | ルールとマナー | 推奨ブラウザ | OCNトップ |
Copyright©1999 NTT Communications