よくあるCGI/SSI設定の問題点と質問


ここではCGI/SSIの設定で陥りやすい問題点とよくあるご質問をサポートいたします

Index

戻る

スクリプト実行時に、「CGIwrap Error: System Error: execv() failed」と表示される

スクリプトがバイナリーモードで転送されていませんか? CGIスクリプトは必ず アスキーモードで転送します


スクリプト実行時に、「CGIwrap Error: User not found in passwd file」 と表示される

CGIスクリプトの設置場所が違っていませんか? CGIスクリプトは必ず /htdocs/cgi−bin ディレクトリに設置します。セキュリィティ上の理由から、その他のディレクトリに設置しても作動しません。これは、PHPの場合も同じです。

また、実行時のURLは
 

 http://www.yourdomain.com/cgi-bin/スクリプト名.cgi となります


htmlファイルとcgiファイルを連携させたプログラム(チャットスクリプト等) の実行時に陥りやすい間違い

index.htmlはcgi-binに設置しても作動しません。必ずhtmlディレクトリに設置します
form method="post" action あるいは "get" action でcgiスクリプトを実行させる 場合には、cgiが設置してある場所(cgi-bin)のパスを正確に指定します。パスを指定 する場合には、cgi-binと指定します。


スクリプト実行時に、「CGIwrap Error: Script is not executable」 と表示される

パーミッションの設定をしましたか? CGIスクリプトを実行するためには、最初に パーミッションの設定をしなければなりません。パーミッションの設定は、chmod command を使って行ないます。また、PHPを実行する場合のパーミッションは、755でなければなりません。

 パーミッションの設定方法は、ご使用のFTPソフトウェアのマニュアルをご参照ください。


パーミッションの変更方法

ご使用のFTPソフトウェアのマニュアルをご参照ください。


CGIスクリプトファイルの最初の行に書くパス

CGIスクリプトの最初の行には

#!/usr/bin/perl または

#!/usr/local/bin/perl

PHPの場合は、

#!/usr/local/bin/php

と記入します

また、sendmailのパスは

/usr/lib/sendmail

dateのバスは

/bin/date

nkfのパスは

/usr/local/bin/nkf

になります


スクリプト実行時に、[an error occurred while processing this directive]と表示される

セキュリィティ上の理由から、exec xxx= は使用できません

代わりに、include virtual= を使用してください

上記スクリプトを含むファイルの拡張子は、.shtml となります

注)SSI は、.html でも作動しますが、セキュリィティ上、なるべく .shtml をご使用ください



スクリプト実行時に「Internal Server Error- The server encountered an internal error..」 と表示される

cgiスクリプト自体に記述ミスがないかどうか確認してください。
cgiスクリプトの文法チェックは、コントロールパネルの「PERL CGI スクリプトのエラーチェック」を使用します

また、.cgi,.pl等のcgiが記載されたスクリプトファイルのパーミッションが755になっているかどうか確認してください。


cgi-binディレクトリに設置した画像がブラウザで表示されません

cgi-binディレクトリは、cgi スクリプトを設置するディレクトリです。画像ファイルはセキュリィティ上、このディレクトリに設置しても表示されません。必ず、htdocs下のディレクトリに設置してください。


perl script のエラーをチェックしたい

作成した、perl script は、

http://www.ドメイン名.com/console/chkperl

でチェックできます。なおチェックの結果は英語表示となります

注)ドメイン名.comは取得ドメインにより、net、info 等に変わります



チャット等でホストネームが表示されなくなりました。

サーバーソフトウェアのAPACHEが最新バージョンにアップグレードされたため、従来のホストアドレスを取得するスクリプトである、

 'REMOTE_HOST'

の機能が無効となっています。そのため、例えばホスト名を取得する部分のスクリプトが、

$remote_host=$ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
    if ($remote_host eq $addr) { $remote_host =
gethostbyaddr(pack('C4',split(/\./,$remote_host)),2) || $addr; }

になっている場合、 if ($remote_host eq $addr) { の部分がエラーとなるため、ホストの取得ができません。
これを修正するには、以下のように記述します。

$addr = $ENV{'REMOTE_ADDR'};
$remote_host = gethostbyaddr(pack('C4',split(/\./,$remote_host)),2) || $addr; }

つまり上記のスクリプトの場合、1行目の
$remote_host=$ENV{'REMOTE_HOST'}; と3行目の
if ($remote_host eq $addr) {
を削除して、エラーが起きないようにします。

上記の作業で、チャット等でのホストアドレスの取得・表示は可能となりますが、ネット上で配布されているスクリプト等につきましては、当社ではサポートできませんので、配布元などに最新のサーバーソフトウェアに対応したスクリプトに変更するようご相談ください。



SSIはどのように実行するのですか

shtmlに次のように記述します

<!--#include virtual="/cgi-bin/スクリプト名.cgi" -->

注1)実行させるcgiスクリプトの指定は、実行するCGIから見た相対ディレクトリを指定します。例えば、index.htmlが、htdocs/test ディレクトリにある場合でも、<!--#include virtual="../cgi-bin/スクリプト名.cgi" -->ではなく、<!--#include virtual="/cgi-bin/スクリプト名.cgi" -->と指定します。

注2)SSIは、exec cmd の記述でも作動する場合がありますが、作動を保証するものではありません。必ず、include virtualをご使用ください。



cgiメール、ショッピングバスケット等で文字化けが起こります

まず最初に、文字化けを起こすファイルに次のような記述を追加してみてください。

<HEAD>
<TITLE>
実際のタイトルを記入します
</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="cache-control" content="no-cache">
</HEAD>

たいていはこれで解決すると思われます。

サーバーのperl が最新バージョンになったため、旧cgiではうまく作動しない場合もありますので、cgiプログラムならびに、日本語変換プログラム jcode.pl を最新のバージョンに変更することをお勧めします。

さらに追加事項として、
http://openlab.ring.gr.jp/Jcode/index-j.html
から、jcode.pl  の後継版である、Jcode.pm をダウンロードして試してみるのも良いかもしれません

なお現在のところ文字化けは、ネットスケープ4.7以前のバージョンのみで発生しています。IE(インターネット・エクイプローラー)、ネットスケープ7.xでは発生していません。なるべく新しいブラウザをご使用ください



LANに接続されたPCからアクセスできません

LANはお客様内部のネットワークシステムになりますので、基本的には当社のサポート対象外となりますが、下記の事をご確認ください。

LANに接続された各ワークステーションに、取得したドメイン名は登録されていますか。

通常ワークステーションには、

workstation1.somedomainname.com
workstation2.somedomainname.com
workstation3.somedomainname.com

というように、名前が振ってあります。ここに、ドメイン名が指定されていないと、LANからのアクセスはできません。ネットワーク管理者に、ドメイン名をLAN PCのためのドメインネームとして使用しているかどうかお尋ねください。



マニュアルのお問い合わせは、info@inter-surf.comまでどうぞ
なお、CGI/SSIのスクリプトレベルのサポートはいたしませんのでご了承願います
 
戻る